POSIX多線程概述

《POSIX多線程程序設計中文版》讀書筆記

 

在計算機專用術語中,線程是指機器中連續的、順序的屬性集合。

一個UNIX進程可以理解爲一個線程加上地址空間、文件描述符和其他數據。

從某種程度上講,線程是構造異步程序的一種方法。

“進程是資源分配的最小單位,線程是CPU調度的最小單位”

 

先從舀水的程序員說起:三個程序員乘一艘小船出海,開始時風和日麗,過了一會兒之後暴風雨降臨,當暴風雨逐漸減緩後,小船沒了桅杆和帆,留下了一個小縫。小船上有食物、水、槳和一個水桶。於是他們愉快的工作:一個人划船、監視滲水的情況,其他兩個人則可能去睡覺、尋找可以停靠的島嶼、查看水位情況。

空閒的程序員看到水位上升、開始用水桶舀水。當兩個程序員都醒來的時候,可能同時發現了水位上升,都要去拿水桶。但只能有一個拿到水桶,而另外一個人不得不等待。

如果兩個人都睡着了,而划船的人認爲該舀水的時候,通常會推醒一個人而讓另一個人繼續睡覺。但是如果划船的人心情不好,則會大喊大叫把兩個人都吵醒,讓其中一個人幹活的時候另一個則可以繼續睡覺。

當划船的夥計累了的時候,可以喚醒其中一個接替他的工作,然後馬上睡覺,直到他再次被喚醒。這樣他們就可以繼續旅程了。

 

OK,這就是線程的模型。一個程序員就是一個能獨立活動的實體。在這裏,程序員代表線程

舀水的桶划船的槳就是一次只能由一人擁有的令牌,它們可以被理解爲共享數據,或是同步對象。在Pthreads中同步對象稱爲互斥量(mutex)。

輕推和喊叫是與同步對象相關的通信機制,個體等待這些事件的發生。Pthreads中提供了條件變量,可以通過信號和廣播來指示共享數據的狀態。

 

術語:

 

異步:表明事情相互獨立發生,除非有強加的依賴性。

併發:本書中是指實際上可能串行發生的事情好像同事發生一樣。

 

之後會以程序例子的形式展示線程的應用,如如何讓線程退出,如何終止一個正在運行的線程,終止線程後的清理工作等。

 

歡迎大家關注公衆號~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章