如何使两个功能互相遵循,只有一个完成工作时

时间:2018-09-16 00:59:01

标签: python multithreading python-multithreading

好的,所以我有2个函数,它们都得到一个全局变量,并且都是线程,

function 1
get global variable
do something
sleep()

function 2
get global variable
do something
sleep()

现在它们正在同步运行(两者都具有相同的时间戳)或锁定(func1进入睡眠状态,仅在唤醒后才启动func2),这取决于我使用的代码 我想发生的事情是func1完成工作并进入睡眠状态,然后func2开始运行并进入睡眠状态,此外,我还需要一种方法来确保如果它们在同一时间醒来,它们不会试图让对方超速运行

我如何实现这种行为?

1 个答案:

答案 0 :(得分:1)

您需要的是每个功能的行为都像一个“关键部分”。代码的关键部分是一次只能由一个线程执行的部分。一个简单的老式方法是对关键部分使用彼得森算法。 Here 为了更好的方法,您可以使用同步线程。如果第一个功能未释放锁定,则不允许线程进入另一个功能。 Here是阅读它的好地方。