2012-03-22 74 views
0

線程如何知道何時退出?有關POSIX線程的主題

狀況:

-while主程序必須等待線程運行完畢。

- 這可以通過使用稱爲pthread_join的原型函數完成。

- 畢竟,對此函數的調用等待線程本身給出id的線程終止。

回答

2

調用pthread_join(ptherad_t &var)之後,main將等待直到您調用join的所有線程都退出。

一旦所有的線程都完成了他們的任務,當它調用pthread_exit(NULL)時主線程將會退出 。

在線程完成其任務後,您需要調用pthread_exit(NULL)這將停止線程的執行。但這不是強制性的,線程可以簡單地返回,這意味着線程已完成。

當它(線程)調用pthread_exit(NULL)時,調用線程將退出。

+0

我知道;但是如果有任何複雜的答案可用。 – 2012-03-22 10:30:04

+0

非常感謝。 – 2012-03-22 10:35:02

+0

這並不完全正確。 「在調用pthread_join()之後,main將等待直到所有線程[exit]。」 - pthread_join需要一個pthread_t參數來標識要加入的線程 - 您通常會依次爲您創建的每個線程調用pthread_join。創建的線程不需要調用pthread_exit - 僅僅從pthread_create調用的函數返回也可以,但pthread_exit可用於指定傳遞給pthread_join的「void *」值。還有其他選項 - 任何線程都可以用exit()終止程序 - 但它們總是不清除文件和共享內存正確。 – 2012-03-23 09:23:21