假設我有一個申報的pthread_t結構,如下所示:如果我在未使用的pthread_t上調用pthread_join()會發生什麼情況?
pthread_t newThread;
然後我打電話:
pthread_join(&newThread, NULL, myMethod, NULL);
什麼會在pthread_join()呢?
假設我有一個申報的pthread_t結構,如下所示:如果我在未使用的pthread_t上調用pthread_join()會發生什麼情況?
pthread_t newThread;
然後我打電話:
pthread_join(&newThread, NULL, myMethod, NULL);
什麼會在pthread_join()呢?
根據ISO C,newThread
變量是一個「不確定值的對象」,其使用會觸發未定義的行爲。它可能具有觸發CPU異常的「陷阱表示」。
或者它可能只是被解釋爲該類型的隨機值,API可以通過以下兩種方式之一處理:或者沒有這樣的線程,並且返回ESRCH
,或者通過僥倖存在這樣的線程。然後出現各種情況:是否可連接等。
如果您將pthread_join稱爲未初始化的pthread_t,則行爲未定義。
正確:http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_join.html – kay 2012-04-18 02:02:30
你試過了嗎? – Makoto 2012-04-18 01:34:44