В основном это то, что у меня есть:
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 << Выход. Это сообщение никогда не будет отображаться (как это ни странно). </p>
Я что-то не так делаю?