最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

靈活的鎖

2023-07-02 22:57 作者:追逐彗星的尾巴  | 我要投稿

std::unique_lock

unique_locklock_guard更加靈活,它擁有成員函數(shù)lockunlock、try_lock,但占用空間更大,速度也稍慢?!八梨i”一節(jié)中最后的代碼也可以像下面這樣寫:

參數(shù)defer_lock表明互斥量應(yīng)保持解鎖狀態(tài)。

std::unique_lock實(shí)例沒(méi)有與自身相關(guān)的互斥量,即一個(gè)unique_lock對(duì)象并不擁有一個(gè)特定的互斥量,它可以通過(guò)移動(dòng)操作來(lái)獲得對(duì)互斥量的所有權(quán),并在不同的unique_lock實(shí)例之間傳遞。在某些情況下,這種轉(zhuǎn)移是自動(dòng)發(fā)生的,例如當(dāng)函數(shù)返回一個(gè)unique_lock實(shí)例時(shí)。但在其他情況下,需要顯式地調(diào)用std::move來(lái)執(zhí)行移動(dòng)操作。

lock在getLock函數(shù)中聲明為自動(dòng)變量,可以直接返回。func函數(shù)直接轉(zhuǎn)移unique_lock實(shí)例的的所有權(quán)。

鎖的粒度

鎖的粒度用來(lái)描述通過(guò)一個(gè)鎖保護(hù)著的數(shù)據(jù)量大小。一個(gè)細(xì)粒度鎖(a fine-grained lock)能夠保護(hù)較少的數(shù)據(jù)量,一個(gè)粗粒度鎖(a coarse-grained lock)能夠保護(hù)較多的數(shù)據(jù)量。選擇粒度對(duì)于鎖來(lái)說(shuō)很重要,為了保護(hù)對(duì)應(yīng)的數(shù)據(jù),確保鎖有能力保護(hù)這些數(shù)據(jù)也很重要。

如果很多線程正在等待同一個(gè)資源,當(dāng)有線程持有鎖的時(shí)間過(guò)長(zhǎng),就會(huì)增加等待的時(shí)間。std::unique_lock的靈活性在此時(shí)就可以發(fā)揮作用。當(dāng)線程暫時(shí)不需要訪問(wèn)共享數(shù)據(jù)時(shí),可以調(diào)用unlock;當(dāng)再次需要訪問(wèn)共享數(shù)據(jù)時(shí),可以再調(diào)用lock。

Case :

不僅需要讓鎖能鎖住合適粒度的數(shù)據(jù),還要控制鎖的持有時(shí)間,以及判斷哪些操作在執(zhí)行的同時(shí)能夠擁有鎖。一般情況下,執(zhí)行必要的操作時(shí),盡可能將持有鎖的時(shí)間縮減到最小。

Case

在上述代碼中比較兩個(gè)Instance對(duì)象時(shí),由于int的拷貝很容易,所以選擇先將ijcontent分別賦值給vivj后,再對(duì)vivj進(jìn)行比較。這樣做的好處是減少了鎖持有的時(shí)間(僅在執(zhí)行getContent函數(shù)時(shí)持有鎖),并且一個(gè)鎖只持有一次,消除了死鎖的可能性。但是這樣做的后果是——這兩個(gè)值在讀取之后,可能會(huì)被任意的方式所修改,比較的結(jié)果可能為true,但實(shí)際上這兩個(gè)值相等的情況可能僅僅發(fā)生在某個(gè)瞬間。假設(shè)剛剛完成對(duì)vi的賦值后,此時(shí)該線程既不持有i的鎖,也不持有j的鎖,如果有另一個(gè)線程在此刻獲取了ij的鎖,執(zhí)行了交換ijcontent的操作,那么之后vj也將被賦予和vi相同的值,比較也就失去了意義。

Warning:當(dāng)你持有鎖的時(shí)間沒(méi)有達(dá)到整個(gè)操作時(shí)間,就會(huì)讓自己處于條件競(jìng)爭(zhēng)的狀態(tài)。

在這個(gè)例子中,需要尋找一個(gè)合適的機(jī)制,去替換std::mutex

靈活的鎖的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
鹿泉市| 珠海市| 花莲县| 石棉县| 隆安县| 陆川县| 远安县| 通山县| 济阳县| 昌乐县| 河池市| 咸阳市| 杂多县| 渭南市| 安多县| 宜君县| 卫辉市| 阿克苏市| 建宁县| 谢通门县| 娄底市| 长乐市| 台州市| 德昌县| 江津市| 博罗县| 阿瓦提县| 新田县| 太仆寺旗| 吴堡县| 白河县| 安岳县| 万年县| 二手房| 乐东| 图木舒克市| 龙海市| 荆门市| 阿坝| 桐柏县| 邳州市|