日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Go語言中mutex如何使用

Go語言中mutex如何使用,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有瓊中黎族免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1. 基本概念

臨界區(qū)(Critical Section): 當(dāng)程序并發(fā)地運(yùn)行時(shí),多個(gè)Go協(xié)程不應(yīng)該同時(shí)訪問那些修改共享資源的代碼,這些修改共享資源的代碼稱為臨界區(qū)。

競(jìng)態(tài)條件:它旨在描述一個(gè)系統(tǒng)或者進(jìn)程的輸出依賴于不受控制的事件出現(xiàn)順序或者出現(xiàn)時(shí)機(jī)。舉例來說,如果計(jì)算機(jī)中的兩個(gè)進(jìn)程同時(shí)試圖修改一個(gè)共享內(nèi)存的內(nèi)容,在沒有并發(fā)控制的情況下,最后的結(jié)果依賴于兩個(gè)進(jìn)程的執(zhí)行順序與時(shí)機(jī)。而且如果發(fā)生了并發(fā)訪問沖突,則最后的結(jié)果是不正確的。

鎖:是在執(zhí)行并發(fā)時(shí)用于強(qiáng)行限制資源訪問的同步機(jī)制,即用于在并發(fā)控制中保證對(duì)互斥要求的滿足。一般的鎖是建議鎖(advisory lock),每個(gè)線程在訪問對(duì)應(yīng)資源前都需獲取鎖的信息,再根據(jù)信息決定是否可以訪問。若訪問對(duì)應(yīng)信息,鎖的狀態(tài)會(huì)改變?yōu)殒i定,因此其他線程此時(shí)不會(huì)訪問該資源,當(dāng)資源結(jié)束后,會(huì)恢復(fù)鎖的狀態(tài),允許其他線程的訪問。

2.mutex介紹

在了解了上面的基本概念之后,我們來看下Go語言中的mutex。

mutex 用于提供一種加鎖機(jī)制,可確保在某時(shí)刻只有一個(gè)協(xié)程在臨界區(qū)運(yùn)行,以防止出現(xiàn)競(jìng)態(tài)條件。

mutexs是Go的sync包中的一個(gè)數(shù)據(jù)結(jié)構(gòu),定義了兩個(gè)方法:Lock 和 Unlock。所有在 Lock 和 Unlock 之間的代碼,都只能由一個(gè) Go 協(xié)程執(zhí)行,于是就可以避免競(jìng)態(tài)條件。

1) 不用mutex的例子:

Go語言中mutex如何使用

output:

Go語言中mutex如何使用

結(jié)果分析:我們執(zhí)行了5次程序,發(fā)現(xiàn)輸出的結(jié)果并不一致。原因就是 這100個(gè)協(xié)程,產(chǎn)生了競(jìng)態(tài)關(guān)系,導(dǎo)致計(jì)算的結(jié)果,并不是100, 而是變成了不確定的值。

2)使用mutex的例子:(我們通過mutex的鎖機(jī)制來解決這個(gè)問題)

Go語言中mutex如何使用

Output:

Go語言中mutex如何使用

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


名稱欄目:Go語言中mutex如何使用
網(wǎng)站路徑:http://www.dlmjj.cn/article/ppdosj.html