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

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

初識(shí)互斥量

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

Case 0 :

運(yùn)行的結(jié)果大概率是字母和數(shù)字混合在一起被打印出來(lái),并不會(huì)先打印完全部數(shù)字再打印字母。這是因?yàn)榫€程的執(zhí)行并沒(méi)有確定的先后順序。

Case 1 :

如果t1在添加元素時(shí),t2剛好在執(zhí)行查找操作,會(huì)導(dǎo)致未定義行為,因?yàn)榇藭r(shí)數(shù)組正在被修改。

當(dāng)多個(gè)線程涉及到共享數(shù)據(jù)時(shí),為了防止條件競(jìng)爭(zhēng)和數(shù)據(jù)訪問(wèn)沖突,需要用到互斥量(Mutex)。

訪問(wèn)共享數(shù)據(jù)前,將數(shù)據(jù)鎖住,在訪問(wèn)結(jié)束后,再將數(shù)據(jù)解鎖。當(dāng)一個(gè)線程使用特定互斥量鎖住共享數(shù)據(jù)時(shí),其他的線程想要訪問(wèn)鎖住的數(shù)據(jù),都必須等到之前那個(gè)線程對(duì)數(shù)據(jù)進(jìn)行解鎖后,才能進(jìn)行訪問(wèn)——這就是互斥量的作用。

Case 0的優(yōu)化:

一個(gè)線程執(zhí)行完后才執(zhí)行另一個(gè)。

Case 1的優(yōu)化:

一次只有一個(gè)線程可以訪問(wèn)和修改數(shù)組。

使用互斥量來(lái)保護(hù)數(shù)據(jù),并不是僅僅在每一個(gè)成員函數(shù)中都加入一個(gè)std::lock_guard對(duì)象那 么簡(jiǎn)單,一個(gè)指針或引用,也會(huì)讓這種保護(hù)形同虛設(shè)。

在上述代碼中,函數(shù)process_data使用std::lock_guard來(lái)創(chuàng)建一個(gè)互斥量的鎖保護(hù)區(qū)域,確保在同一時(shí)間只有一個(gè)線程可以訪問(wèn)Data對(duì)象的內(nèi)容。但是在boom函數(shù)中調(diào)用process_data函數(shù)時(shí),content的引用被傳遞給了malicious_func函數(shù),從而使得通過(guò)unprotected_content指針可以繞過(guò)互斥量的保護(hù),直接修改Data對(duì)象的內(nèi)容,如果此時(shí)有其他線程在訪問(wèn)和修改Data對(duì)象,又將引發(fā)數(shù)據(jù)競(jìng)爭(zhēng)和未定義的行為。

Warning:切勿將受保護(hù)數(shù)據(jù)的指針或引用傳遞到互斥鎖作用域之外,無(wú)論是函數(shù)返回值,還是存儲(chǔ)在外部可見(jiàn)內(nèi)存,亦或是以參數(shù)的形式傳遞到其他函數(shù)中去。

初識(shí)互斥量的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
电白县| 永顺县| 中西区| 固阳县| 青州市| 岱山县| 溧水县| 永清县| 香港| 密云县| 莱阳市| 青阳县| 长春市| 鹿邑县| 淳安县| 吴桥县| 昌图县| 云霄县| 太原市| 蛟河市| 江都市| 昭苏县| 江永县| 岳西县| 民丰县| 邵阳县| 繁峙县| 娱乐| 日土县| 班戈县| 通榆县| 瓦房店市| 恩施市| 赤峰市| 凌海市| 星座| 昌平区| 寿阳县| 新疆| 都兰县| 盘锦市|