我在这种情况下:在某个时刻,主线程需要等到另一个线程启动(活动)。如何通知主线程?
我不想写一个循环并让主线程忙等待。非常感谢。
答案 0 :(得分:1)
在第二个线程上调用start后,使用threading.Semaphore
主线程将调用acquire
。当第二个线程启动到您想要的点时,它将在同一个信号量上调用release
。
如果第二个线程首先调用release
,那么主线程将立即从acquire
返回。如果主线程首先调用acquire
,那么它将阻塞,直到第二个线程调用release
。
使用threading.Condition
,其中单个条件变量可用于主线程和第二个线程。然后,主线程在启动第二个线程后可以wait
。当第二个线程启动时,它可以更改变量,然后在其上发出notify
。