簡體   English   中英

在非關鍵部分執行lock.acquire阻止進程

[英]Does lock.acquire blocks processes in non critical section

也許我沒有很好地閱讀過文檔,但是我沒有找到有關lock或rlock的aquire工作方式的更多信息...不管這些進程在執行什么語句,它是否都會阻塞所有進程(即使它們並不重要)部分)..還是僅阻止嘗試訪問關鍵部分的進程

謝謝 !

從文檔:

class multiprocessing.Lock

非遞歸鎖定對象:threading.Lock的近似模擬。 一旦進程或線程獲取了鎖,則隨后從任何進程或線程獲取鎖的嘗試都將阻塞,直到釋放為止;否則,該鎖將被釋放。 任何進程或線程都可能釋放它。 除非另有說明,否則適用於線程的threading.Lock的概念和行為將在multiprocessing.Lock中復制,適用於進程或線程。

因此,當您調用acquire() (注意block參數使用默認值)時,您的過程將:

  1. 如果鎖處於解鎖狀態,請獲取該鎖。
  2. 阻止直到鎖處於解鎖狀態,然后再獲取它。

這種機制使您可以在邏輯中定義“關鍵部分”,這意味着一次僅一個進程將執行該特定功能(即播放音頻文件)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM