五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

秒殺多線程-經(jīng)典線程同步總結(jié) 關(guān)鍵段 事件 互斥量 信號量

2023-03-20 20:55 作者:ベ計院小白隆ミ  | 我要投稿

1.線程(進程)同步的主要任務(wù)

在引入多線程后,由于線程執(zhí)行的異步性,會給系統(tǒng)造成混亂,特別是在急用臨界資源時,如多個線程急用同一臺打印機,會使打印結(jié)果交織在一起,難于區(qū)分。當多個線程急用共享變量,表格,鏈表時,可能會導(dǎo)致數(shù)據(jù)處理出錯,因此線程同步的主要任務(wù)是使并發(fā)執(zhí)行的各線程之間能夠有效的共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。


2.線程(進程)之間的制約關(guān)系?

當線程并發(fā)執(zhí)行時,由于資源共享和線程協(xié)作,使用線程之間會存在以下兩種制約關(guān)系。(1).間接相互制約。一個系統(tǒng)中的多個線程必然要共享某種系統(tǒng)資源,如共享CPU,共享I/O設(shè)備,所謂間接相互制約即源于這種資源共享,打印機就是最好的例子,線程A在使用打印機時,其它線程都要等待。

(2).直接相互制約。這種制約主要是因為線程之間的合作,如有線程A將計算結(jié)果提供給線程B作進一步處理,那么線程B在線程A將數(shù)據(jù)送達之前都將處于阻塞狀態(tài)。

間接相互制約可以稱為互斥直接相互制約可以稱為同步,對于互斥可以這樣理解,線程A和線程B互斥訪問某個資源則它們之間就會產(chǎn)個順序問題——要么線程A等待線程B操作完畢,要么線程B等待線程A操作完畢,這其實就是線程的同步了。因此同步包括互斥,互斥其實是一種特殊的同步。


3.臨界資源和臨界區(qū)

在一段時間內(nèi)只允許一個線程訪問的資源就稱為臨界資源或獨占資源,計算機中大多數(shù)物理設(shè)備,進程中的共享變量等待都是臨界資源,它們要求被互斥的訪問。每個進程中訪問臨界資源的代碼稱為臨界區(qū)


關(guān)鍵段CS與互斥量Mutex

關(guān)鍵段與互斥量都有“線程所有權(quán)”概念,可以將“線程所有權(quán)”理解成旅館的房卡,在旅館前臺登記名字擁有房卡后是可以多次進出房間的,其它人則無法進入直到你交出房卡。每個線程必須先通過EnterCriticalSection或WaitForSingleObject來嘗試獲得“線程所有權(quán)”才能調(diào)用LeaveCriticalSection或ReleaseMutex。否則會調(diào)用失敗,這就相當于偽造房卡去辦理退房手續(xù)——由于登記本上沒有你的名字所以會被拒絕。

互斥量能很好的處理“遺棄”情況,因此在多進程之間可以放心的使用。

事件Event

注意事件的手動置位和自動置位要分清楚,不要混淆了。

信號量Semaphore

信號量在計數(shù)大于0時表示觸發(fā)狀態(tài),調(diào)用WaitForSingleObject不會阻塞,等于0表示未觸發(fā)狀態(tài),調(diào)用WaitForSingleObject會阻塞直到有其它線程遞增了計數(shù)。

注意:互斥量,事件,信號量都是內(nèi)核對象,可以跨進程使用(通過OpenMutex,OpenEvent,OpenSemaphore)。不過為什么只有互斥量能解決“遺棄”情況,請看


參考:https://blog.csdn.net/morewindows/article/details/7538247



秒殺多線程-經(jīng)典線程同步總結(jié) 關(guān)鍵段 事件 互斥量 信號量的評論 (共 條)

分享到微博請遵守國家法律
渝北区| 莲花县| 曲沃县| 温宿县| 高邮市| 台州市| 佛学| 宝丰县| 邮箱| 东安县| 桓仁| 河曲县| 浮梁县| 灯塔市| 绩溪县| 临夏市| 耒阳市| 江源县| 刚察县| 长寿区| 大港区| 太和县| 合肥市| 犍为县| 九江县| 云霄县| 乐平市| 汉寿县| 清徐县| 淮滨县| 天镇县| 万州区| 毕节市| 庄河市| 阿坝县| 达拉特旗| 金川县| 康乐县| 都兰县| 朝阳区| 青河县|