仅当一个函数完成其工作时,如何使两个函数相互跟随

how to make 2 functions follow each other only if one finished doing its work

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

function 1
get global variable
do something
sleep()

function 2
get global variable
do something
sleep()

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

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

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