int pthread_join(pthread_t thread, void **retval);
的指針按照手冊頁在pthread_join應該使用指針的指針作爲參數傳遞給存儲返回value.I無法理解爲什麼它的設計,使得它way.Is足夠使用指針變量在那?使用指針的函數在pthread_join
int pthread_join(pthread_t thread, void **retval);
的指針按照手冊頁在pthread_join應該使用指針的指針作爲參數傳遞給存儲返回value.I無法理解爲什麼它的設計,使得它way.Is足夠使用指針變量在那?使用指針的函數在pthread_join
如果我已經清楚地理解您的查詢.. 你應該使用這樣的..
pthread_t a_thread;
void *thread_result;
pthread_join(a_thread, &thread_result);
缺少的是返回值*是* void *';它不需要指向任何東西,因爲它是一個不透明的指針。 – abligh 2014-12-01 17:48:03
傳遞給pthread_create
起動程序返回Foobar
類型的值。我不知道什麼是Foobar
,但如果你想捕捉價值pthread_join
,你必須在傳遞一個Foobar*
。
現在,當我看着pthread_create
文檔,我看到Foobar
實際上void*
是。因此pthread_join
應該接受void**
。
僅僅因爲你不明白它並不意味着它會起作用,如果你不遵循函數的規範。 – 2014-12-01 16:31:16
它接收你從線程proc返回的指針(它有一個'void *'結果)。該值必須存儲在*某處*。 'pthread_join'結果將成爲候選者,但它被用來傳達函數成功/失敗結果。因此,一個外部參數誕生了。作爲C中的一個外部參數,它將目標作爲地址提供,因此也是指針指針。 – WhozCraig 2014-12-01 16:31:18
它是這樣設計的,以便線程可以存儲一個void *在線程執行時不會消失的某個地方。 – 2014-12-01 16:32:11