我曾經在pthread_exit()
遇到麻煩。我知道有沒有辦法用pthread_exit()
的方式像pthread_exit()與本地變量的地址有時起作用?
pthread_exit(&some_local_variable);
我們總是需要使用了pthread_exit(),如:
pthread_exit("Thread Exit Message or something necessary information");
我曾經編碼測試目的一個簡單的程序。 我做了四個線程函數分別加,減,乘和除兩個整數。然後,當在四個不同的線程上執行這些操作時,我試圖返回pthread_exit()
的操作結果。我的意思是一樣的東西:
pthread_exit(&add_result);
當我運行的代碼在CentOS 6的,我得到了想要的結果(即從所有線程垃圾值)作爲pthread_exit()
不能這樣使用。但是,我感到困惑。因爲我第一次在Ubuntu 11.10中運行該代碼,並從三個線程得到了三個絕對正確的結果(操作的正確結果),並從一個線程得到了垃圾值。這讓我感到困惑,因爲三個線程爲什麼會給出正確的操作結果?
此外,我對這些線程使用了不同的睡眠時間。我發現睡眠時間最少的線程給了垃圾值。
由於gcc是這兩種操作系統的編譯器,爲什麼一個系統有這樣的錯誤? 它混淆了像我這樣的新手程序員。如果它不是一個bug,任何人都可以向我解釋爲什麼會發生這種情況?
事情有效的事實並不意味着它是正確的...:) – Saphrosit 2012-04-05 11:20:43
只是一個音符。你不總是*必須返回字符串常量。例如,你可以在'malloc()'內存中存儲一個值,然後返回'malloc'指針。重點是:返回**線程退出後保持有效的任何**地址。 – ArjunShankar 2012-04-05 11:27:32
謝謝。我應該知道的。 – 2012-04-06 11:54:07