pthread_detach()分離乙個執行緒,對當前執行緒的執行沒有任何影響。僅僅是通知系統當前該執行緒結束時,其所屬資源可以被**。
乙個沒有被分離的執行緒終止時會保留其虛擬記憶體,包括它們的堆疊和其他系統資源。
main函式所在的執行緒,稱為主線程,或者初始執行緒。主線程結束,意味著此程序結束,那麼程序結束時,並不會等待其他執行緒結束。可以在main函式中呼叫pthread_exit(),這樣子程序必須等所有的執行緒結束才會終止。
pthread_join()可以實現執行緒間的同步。在乙個執行緒結束之前,另乙個執行緒會一直處於阻塞狀態。這樣子兩個執行緒就有先後了,有時候這種先後很必要。
執行緒安全指的是,**能改夠被多個執行緒呼叫而不會產生災難性的結果。
可以將執行緒安全函式分為多個小的臨界區,這樣多個執行緒可以同時進入該函式,雖然仍然無法同時進入臨界區;
更好的方法是將**改造為對臨界資料的保護,而非對臨界**的保護。
併發中的「同步」概念,整合和我們常見的意思相反,不是「同時發生」,反而是「阻止同時發生」。或者用「協調」來表示,同步就是讓執行緒協調地完成工作的機制。
實現同步的工具和手段有:互斥量、條件變數、訊號量和事件。還可以通過訊息傳遞機制,如unix管道,socket,posix訊息佇列。
Linux下的多執行緒程式設計(三)
下面先來乙個例項。我們通過建立兩個執行緒來實現對乙個數的遞加。或許這個例項沒有實際運用的價值,但是稍微改動一下,我們就可以用到其他地方去拉。下面是我們的 thread example.c c multiple thread programming in linux author falcon e m...
linux下多執行緒程式設計入門(三)
前面兩節粗略學習了一下多執行緒程式設計,這一節我們來了解一下鎖的概念。由於多執行緒之間是併發執行的,而系統排程又是隨機的,因此在寫多執行緒程式時會出現很多問題,這時就免不了要用到各種鎖機制來保證執行緒安全且按我們的意願正確執行。當多個執行緒同時讀寫同一塊 區的時候,就出現很多問題。比如初始i 0 我...
linux下多執行緒程式設計
先看執行的結果 1 主函式正在建立執行緒,2執行緒1被建立 3 thread1 i m thread 1th 4執行緒2被建立 5 thread2 i m thread 2nd 6 thread2 number 0 7執行緒3被建立 8主函式正在等待執行緒結束.9 thread1 number 0 ...