如何在使用PyGTK的Gtk中实现Mutex
我有一个应用程序,它通过
gobject.timeout_add(delay, function)
来启动几个线程。
现在在我的函数里,我想测试并设置一个变量,比如说
。
def function(self):
if flag == True:
flag = False
doSomething()
为了让这个操作在多线程中安全,我需要用某种互斥锁来锁定这个函数。
请问在Gtk中可以做到这一点吗?或者我可以使用Python的threading
模块里的Lock
对象吗?
1 个回答
0
我刚发现,gobject.timeout_add(delay, function)
和 gobject.idle_add(function)
是安全可以使用的。我试着用
for i in range(X):
gobject.idle_add(workerFunction)
来测试,结果发现从来没有两个工作线程同时在执行。这意味着,gobject.timeout_add(delay, function)
和 gobject.idle_add(function)
调用的函数是原子的,也就是说它们总是严格一个接一个地执行。所以,问题中提到的简单检查其实是没必要的。
实际上,无论我怎么做,都没有出现任何竞争条件。所以不需要额外的锁机制。