Tag: 条件变量

交换例程共享互斥锁

我有a在一些随机时间重复调用的方法,它触发方法b ,它在一些随机时间之后完全执行并且在它自己的线程中。 我想确保等待的后续执行直到b完成,这是由当前执行的a触发a 。 换句话说, a和b将被替代地执行。 我尝试使用互斥和条件变量执行此操作,如下所示: def a Thread.new do $mutex.synchronize do puts “a” b $cv.wait($mutex) end end end def b Thread.new do sleep(rand) $mutex.synchronize do puts “b” $cv.signal end end end $mutex, $cv = Mutex.new, ConditionVariable.new loop{a; sleep(rand)} 在这段代码中, $mutex.synchronize do … end in方法a确保在$cv.wait($mutex)之前不会调用方法b中的$cv.signal (也在另一个$mutex.synchronize do … end ) $cv.wait($mutex)将$cv设置为信号的聆听模式。 这在文件中给出了很多。 我打算分配给$mutex.synchronize do […]