Basicly에 대한 혼란이 내가 가진 무엇 :C++는 스레드
Server::
Server (int port) {
cout << "Initializing server.\n";
(...)
pthread_t newthread;
pthread_create(&newthread, NULL, &Server::_startListening, NULL);
cout << "Exit\n";
pthread_exit(NULL); // <-- Question
}
void* Server::_startListening (void* param) {
cout << "Start listening for clients ...\n";
return 0;
}
질문 : 내가 (NULL을)는 pthread_exit을 넣어하지 않는 경우; 코드에서 Linux (Ubuntu)에서 컴파일 할 때 작동하지만 Mac OSX 10.6.2에서는 작동하지 않습니다. 컴파일하고 리눅스에서 실행할 때 서버 초기화, 클라이언트 청취 시작, Mac OSX 종료 중 서버 초기화, 종료, 클라이언트 청취 시작이 표시됩니다.
문제는 poutread_exit 주변에서 발생하는 것으로 보입니다. 만약 내가 그것을 위의 위치에두면 < < Exit. 그 메시지는 결코 표시되지 않을 것입니다 (얼마나 이상한가).
내가 잘못 했나요?
'pthread_exit (NULL);'무엇을 할 것으로 기대합니까? –
그러나 pthread_exit 또는 pthread_join이 주어지지 않은 경우 Mac OS가 스레드를 무시하는 이유는 무엇입니까? – Mark