如何在使用PyGTK的Gtk中实现Mutex

0 投票
1 回答
817 浏览
提问于 2025-04-16 10:00

我有一个应用程序,它通过

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) 调用的函数是原子的,也就是说它们总是严格一个接一个地执行。所以,问题中提到的简单检查其实是没必要的。

实际上,无论我怎么做,都没有出现任何竞争条件。所以不需要额外的锁机制。

撰写回答