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;
}
問題: 如果我不把了pthread_exit(NULL);在代碼中,當我在Linux(Ubuntu)上編譯它時,它將工作,但它不適用於Mac OSX 10.6.2。當我在Linux上編譯並運行它時,它會說初始化服務器,開始監聽客戶端,在Mac OSX上退出時它會說服務器初始化,退出,開始監聽客戶端。
這個問題似乎發生在pthread_exit的周圍,如果我把它放在cout的上方< < Exit。該消息將永遠不會顯示(這有多奇怪)。
我做錯了什麼?
你期望什麼'pthread_exit(NULL);'做什麼? – 2010-02-10 02:04:47
但是,如果沒有提供pthread_exit或pthread_join,爲什麼Mac OS會忽略該線程? – Mark 2010-02-10 10:17:48