首页 > 解决方案 > 仅当一个功能完成工作后,如何使两个功能相互跟随

问题描述

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

function 1
get global variable
do something
sleep()

function 2
get global variable
do something
sleep()

现在他们正在同步运行(他们两个的时间戳相同)或锁定(func1进入睡眠状态,只有在它唤醒之后func2才会启动)取决于我使用的代码我想要发生的是func1在做它的工作并继续睡觉,然后func2开始运行并进入睡眠状态,我还需要一种方法来确保他们在同一时间醒来时不会试图超越对方。

我怎样才能实现这种行为?

标签: pythonmultithreadingpython-multithreading

解决方案


您需要的是每个功能都表现得像一个“关键部分”。代码的关键部分是一次只能由一个线程执行的代码。一个简单的老派方法是使用彼得森的临界区算法。这里 为了更好的方法,您可以使用同步线程。如果第一个函数没有释放锁,这不允许线程进入另一个函数。是一个阅读它的好地方。


推荐阅读