2012-03-01 60 views
-1

我使用AIX/HP-UX/LINUX這個代碼,但是當我嘗試在Mac OS X上運行它,它不工作得好:的pthread_t在Mac OS X是NULL

pthread_t m_thread; 
       int merror;//thread return 
cout << "init" << endl; 
       if (m_thread != NULL){ 
cout << "running" << endl; 
merror= pthread_create(&m_thread, NULL, _exec, NULL);//initialize thread 
} 

在Linux pthread被創建並且正在運行的消息出現在屏幕上。 但是在Mac os x上,m_thread返回null,所以不能在MAC OS X上執行相同的代碼,有人知道它爲什麼會發生。

的編譯代碼:G ++ -g -o sclient sclient.cpp socket.cpp -pthread -lpthread -thread

+0

討厭這麼說,但是你的代碼對我沒有任何NULL返回值(MacOS 10.7.3) – 2012-03-01 21:56:16

+0

你是否收到錯誤?你的代碼在'pthread_create'返回後做了什麼? (如果你結束這個過程,線程可能沒有機會運行。) – 2012-03-01 22:03:52

+0

解決了,我不知道爲什麼在Linux上測試返回它的好,所以我刪除了測試。 – Lefsler 2012-03-02 00:16:13

回答

3

你不應該檢查m_thread != NULL,這沒有任何意義。刪除該檢查,它應該工作正常。

0

當您進行測試時,您尚未初始化m_thread - 它的值不確定。