久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

        千鋒教育

        掃一掃進入千鋒手機站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時隨地免費學(xué)習(xí)課程

        當前位置:首頁  >  技術(shù)干貨  > python線程同步(鎖)

        python線程同步(鎖)

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-11-07 18:00:23 1699351223

        多線程的優(yōu)勢在于可以同時運行多個任務(wù)(至少感覺起來是這樣)。但是當線程需要共享數(shù)據(jù)時,可能存在數(shù)據(jù)不同步的問題??紤]這樣一種情況:一個列表里所有元素都是0,線程"set"從后向前把所有元素改成1,而線程"print"負責(zé)從前往后讀取列表并打印。那么,可能線程"set"開始改的時候,線程"print"便來打印列表了,輸出就成了一半0一半1,這就是數(shù)據(jù)的不同步。為了避免這種情況,引入了鎖的概念。

        鎖有兩種狀態(tài)——鎖定和未鎖定。每當一個線程比如"set"要訪問共享數(shù)據(jù)時,必須先獲得鎖定;如果已經(jīng)有別的線程比如"print"獲得鎖定了,那么就讓線程"set"暫停,也就是同步阻塞;等到線程"print"訪問完畢,釋放鎖以后,再讓線程"set"繼續(xù)。經(jīng)過這樣的處理,打印列表時要么全部輸出0,要么全部輸出1,不會再出現(xiàn)一半0一半1的尷尬場面。

        1.線程通信(條件變量)

        然而還有另外一種尷尬的情況:列表并不是一開始就有的;而是通過線程"create"創(chuàng)建的。如果"set"或者"print"在"create"還沒有運行的時候就訪問列表,將會出現(xiàn)一個異常。使用鎖可以解決這個問題,但是"set"和"print"將需要一個無限循環(huán)——他們不知道"create"什么時候會運行,讓"create"在運行后通知"set"和"print"顯然是一個更好的解決方案。于是,引入了條件變量。

        條件變量允許線程比如"set"和"print"在條件不滿足的時候(列表為None時)等待,等到條件滿足的時候(列表已經(jīng)創(chuàng)建)發(fā)出一個通知,告訴"set"和"print"條件已經(jīng)有了,你們該起床干活了;然后"set"和"print"才繼續(xù)運行。

        2.線程運行和阻塞的狀態(tài)轉(zhuǎn)換

        最后看看線程運行和阻塞狀態(tài)的轉(zhuǎn)換。

        阻塞有三種情況:

        同步阻塞是指處于競爭鎖定的狀態(tài),線程請求鎖定時將進入這個狀態(tài),一旦成功獲得鎖定又恢復(fù)到運行狀態(tài);

        等待阻塞是指等待其他線程通知的狀態(tài),線程獲得條件鎖定后,調(diào)用“等待”將進入這個狀態(tài),一旦其他線程發(fā)出通知,線程將進入同步阻塞狀態(tài),再次競爭條件鎖定;

        而其他阻塞是指調(diào)用time.sleep()、anotherthread.join()或等待IO時的阻塞,這個狀態(tài)下線程不會釋放已獲得的鎖定。

        以上內(nèi)容為大家介紹了python線程同步(鎖),希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
        免費領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        安新县| 叙永县| 莫力| 义乌市| 福泉市| 桐梓县| 南平市| 寿光市| 沾化县| 达拉特旗| 健康| 阿鲁科尔沁旗| 昌平区| 通榆县| 称多县| 海淀区| 调兵山市| 辽中县| 客服| 盐城市| 秦安县| 海伦市| 临汾市| 罗定市| 英吉沙县| 辉县市| 嘉定区| 万宁市| 沙坪坝区| 酉阳| 望城县| 阜平县| 巴中市| 赤水市| 泗洪县| 阆中市| 鄄城县| 香河县| 霸州市| 四子王旗| 那曲县|