繁体   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