我试图了解互斥在多线程应用程序中是如何工作的,但我有些疑惑。在我的情况下,我有从设备读取的线程,写入设备的线程和同步线程。在同步线程中,我有一个这种形式的计时器:
def CheckConnection(self):
. . .
threading.Timer(1, self.CheckConnection).start()
此计时器定期运行CheckConnection功能。
你可以告诉我:当线程被锁定(获取)时,意味着线程停止执行并等待?这是暂停吗?
当我启动同步线程,我的checkConnection函数执行并且计时器启动,同步线程被锁定后会发生什么...这将停止计时器并执行CheckConnection函数?
答案 0 :(得分:0)
使用互斥锁的每个线程都应该执行以下操作:
themutex.acquire()
try:
print('Do some stuff')
finally:
themutex.release()
一般来说,获取和发布之间的代码,即“做一些事情”,应尽可能快,因为获取互斥锁的这些代码段的最大持续时间也是另一个线程被阻塞的最大时间(除非有多个线程被阻塞,显然最大延迟可能会更长)。