python 線程鎖愿棋、條件變量

相關(guān)模塊:thread澡谭、threading

thread 模塊

thread 文檔:https://docs.python.org/2/library/thread.html
This module provides low-level primitives for working with multiple threads. The threading module provides an easier to use and higher-level threading API built on top of this module.

主要方法:
thread.allocate_lock() # 獲取一個(gè)互斥鎖
thread.get_ident() # 獲取線程 id

thread.lock 互斥鎖對(duì)象

實(shí)現(xiàn)了互斥鎖原語
方法列表:
lock.acquire([waitflag]) # waitflag 為 0 時(shí)争涌,語義為 try_lock;非 0 時(shí)音五,為 lock
lock.release()
lock.locked()

threading 模塊

RLock 可重入(reentrant)鎖對(duì)象

語義:通過引用計(jì)數(shù)(__count)和線程 id (__owner)標(biāo)志惫撰,使得同一線程可以重入
支持操作:
acquire()
release()
條件變量輔助操作:
_acquire_restore
_release_save

Condition 條件變量

說明:可以底層可以使用互斥鎖(thread.lock)或者可重入鎖(RLock),主要方法:
wait
notify
notifyAll

實(shí)現(xiàn):不是對(duì)于系統(tǒng)條件變量的簡(jiǎn)單封裝躺涝,而是自己通過鎖機(jī)制實(shí)現(xiàn)重新實(shí)現(xiàn)的條件變量的語義厨钻。每當(dāng)有一個(gè)線程 wait 的時(shí)候,先拿到共享鎖坚嗜,再為此線程分配一個(gè)互斥鎖(thread.lock)夯膀,讓線程等待在此鎖上,并將此鎖加入等待隊(duì)列 __waiters苍蔬,notify 則是從等待隊(duì)列 __waiters 中取出任意一個(gè)互斥鎖釋放掉诱建。代價(jià)是每個(gè)線程都會(huì)開一個(gè)互斥鎖。

Semaphore 信號(hào)量

說明:和互斥量類似碟绑,只不過是一次可以由多個(gè)使用者拿到鎖俺猿。
實(shí)現(xiàn):通過條件變量 Condition 和計(jì)數(shù)實(shí)現(xiàn)。

Event 事件

封裝條件變量的通知機(jī)制

Timer

通過條件變量實(shí)現(xiàn)的定時(shí)器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜈敢,一起剝皮案震驚了整個(gè)濱河市辜荠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抓狭,老刑警劉巖伯病,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡午笛,警方通過查閱死者的電腦和手機(jī)惭蟋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來药磺,“玉大人告组,你說我怎么就攤上這事“┡澹” “怎么了木缝?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)围辙。 經(jīng)常有香客問我我碟,道長(zhǎng),這世上最難降的妖魔是什么姚建? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任矫俺,我火速辦了婚禮,結(jié)果婚禮上掸冤,老公的妹妹穿的比我還像新娘厘托。我一直安慰自己,他們只是感情好稿湿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布铅匹。 她就那樣靜靜地躺著,像睡著了一般缎罢。 火紅的嫁衣襯著肌膚如雪伊群。 梳的紋絲不亂的頭發(fā)上考杉,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天策精,我揣著相機(jī)與錄音,去河邊找鬼崇棠。 笑死咽袜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的枕稀。 我是一名探鬼主播询刹,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼萎坷!你這毒婦竟也來了凹联?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤哆档,失蹤者是張志新(化名)和其女友劉穎蔽挠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓜浸,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澳淑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年比原,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杠巡。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡量窘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出氢拥,到底是詐尸還是另有隱情蚌铜,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布嫩海,位于F島的核電站厘线,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏出革。R本人自食惡果不足惜造壮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望骂束。 院中可真熱鬧耳璧,春花似錦、人聲如沸展箱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽混驰。三九已至攀隔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栖榨,已是汗流浹背昆汹。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留婴栽,地道東北人满粗。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像愚争,于是被迫代替她去往敵國(guó)和親映皆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1.進(jìn)程和線程 隊(duì)列:1轰枝、進(jìn)程之間的通信: q = multiprocessing.Queue()2捅彻、...
    一只寫程序的猿閱讀 1,103評(píng)論 0 17
  • 線程和進(jìn)程 計(jì)算機(jī),用于計(jì)算的機(jī)器鞍陨。計(jì)算機(jī)的核心是CPU步淹,在現(xiàn)在多核心的電腦很常見了。為了充分利用cpu核心做計(jì)算...
    人世間閱讀 24,337評(píng)論 3 85
  • 線程狀態(tài)新建,就緒贤旷,運(yùn)行广料,阻塞,死亡幼驶。 線程同步多線程可以同時(shí)運(yùn)行多個(gè)任務(wù)艾杏,線程需要共享數(shù)據(jù)的時(shí)候,可能出現(xiàn)數(shù)據(jù)不...
    KevinCool閱讀 795評(píng)論 0 0
  • 下面是我自己收集整理的Java線程相關(guān)的面試題盅藻,可以用它來好好準(zhǔn)備面試购桑。 參考文檔:-《Java核心技術(shù) 卷一》-...
    阿呆變Geek閱讀 14,769評(píng)論 14 507
  • 差點(diǎn)又忘了,對(duì)誰都好的人氏淑,其實(shí)最無情勃蜘。 我只有一顆心,裝得下你就裝不下其他人假残,因?yàn)闈M了缭贡。你也只有一...
    云居雁閱讀 2,366評(píng)論 1 3