1. 程式人生 > >29.Linux/Unix 系統程式設計手冊(上) -- 執行緒:介紹

29.Linux/Unix 系統程式設計手冊(上) -- 執行緒:介紹

1.執行緒	
	執行緒是允許應用程式併發執行多個任務的一種機制。
	一個程序可以包含多少執行緒,同一程式中的所有執行緒均會獨立執行相同的程式,且共享一份全域性記憶體區域,其中包括
  初始化資料段,未初始化資料段以及堆記憶體段。

  若執行緒未分離,則必須使用 pthread_join() 連線。如果未能連線,那麼執行緒終止時將產生殭屍執行緒。
  pthread_join() 執行的功能類似於針對程序的 waitpid() 呼叫,不過二者有區別:
  1.執行緒之間的關係是對等的。程序中的任意執行緒都可以呼叫pthread_join()與該程序的其他執行緒連線起來。
  2.無法"連線任意執行緒",也不能以非阻塞方式進行連線。

  執行緒的分離:
   預設情況下,執行緒是可連線的,也就是說,當執行緒退出時,其他執行緒可以通過呼叫 pthread_join()來獲取其返回狀態。
 有時,我們不關心執行緒的返回狀態,只希望系統線上程終止時能夠自動清理並移除。在這種情況下,可以呼叫pthread_detach(),
 並向執行緒引數 thread 傳入指定的執行緒識別符號,將該執行緒標誌為處於分離的狀態。
   一旦執行緒處於分離狀態,就不能再使用 pthread_join() 來獲取其狀態,也無法使其重返"可連線"狀態。
   其他執行緒呼叫了 exit() 或者主執行緒執行了 return 語句時,即使遭到分離的執行緒還是會受到影響的。此時,不管執行緒處於可連線
 還是已分離狀態,程序的所有執行緒會立即終止。換言之,pthread_detach()只是控制執行緒終止後發生的事情,而非何時或者如何終止執行緒。

pthread_create();
pthread_exit();
pthread_self();
pthread_equal();
pthread_join();
pthread_detach();