日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > CPP開發(fā)者
[導讀]hi,大伙好,今天介紹一下無鎖編程基礎(chǔ)知識,希望大家可以了解無鎖編程基本原理。無鎖編程是一個挑戰(zhàn),不僅因為任務(wù)本身的復雜性,還因為從一開始就很難深入了解這個主題,因為該主題和底層技術(shù)(編譯器,CPU,內(nèi)存)息息相關(guān),需要深厚底層功底。我學習無鎖編程是BruceDawson出色而全...

hi,大伙好,今天介紹一下無鎖編程基礎(chǔ)知識,希望大家可以了解無鎖編程基本原理。

無鎖編程是一個挑戰(zhàn),不僅因為任務(wù)本身的復雜性,還因為從一開始就很難深入了解這個主題,因為該主題和底層技術(shù)(編譯器,CPU,內(nèi)存)息息相關(guān),需要深厚底層功底。

我學習無鎖編程是Bruce Dawson 出色而全面的白皮書Lockless Programming Considerations(無鎖編程的思考)。和許多技術(shù)一樣,需要將理論付諸實踐,在平臺上開發(fā)和調(diào)試無鎖代碼。

在這篇文章中,我想重新介紹無鎖編程,首先是定義它,然后將大部分信息提煉為幾個關(guān)鍵概念。我將使用流程圖展示這些概念如何相互關(guān)聯(lián),然后我們將深入研究細節(jié)。至少,任何從事無鎖編程的程序員都應(yīng)該已經(jīng)了解如何使用互斥鎖和其他高級同步對象(如信號量和事件)編寫正確的多線程代碼。

它是什么?

人們通常將無鎖編程描述為沒有互斥鎖的編程,互斥鎖也稱為這是真的,但這只是故事的一部分。基于學術(shù)文獻的普遍接受的定義更廣泛一些。從本質(zhì)上講,無鎖是一種用于描述某些代碼的屬性,而無需過多說明該代碼的實際編寫方式。

基本上,如果您的程序的某些部分滿足以下條件,那么該部分可以理所當然地被認為是無鎖的。相反,如果代碼的給定部分不滿足這些條件,則該部分不是無鎖的。


從這個意義上說,無鎖中的鎖并不直接指互斥鎖,而是指以某種方式“鎖定”整個應(yīng)用程序的可能性,無論是死鎖、活鎖——甚至是由于由你最大的敵人。最后一點聽起來很有趣,但這是關(guān)鍵。共享互斥鎖被簡單地排除在外,因為一旦一個線程獲得互斥鎖,您最大的敵人就再也不會調(diào)度該線程了。當然,真正的操作系統(tǒng)不是這樣工作的——我們只是定義術(shù)語。

這是一個不包含互斥鎖但仍然不是無鎖的操作的簡單示例。最初,X = 0。作為讀者的練習,考慮如何以一種方式調(diào)度兩個線程,使得兩個線程都不退出循環(huán)。

while(X == 0 ) {
X =
1 - X;
}


沒有人期望大型應(yīng)用程序是完全無鎖的。通常,我們從整個代碼庫中識別出一組特定的無鎖操作。例如,在一個無鎖隊列中,有可能是無鎖的操作,比如極少數(shù)的push,pop也許isEmpty等。


Herlihy
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉