我的进程有两个线程,如下所示
@semaphore = Mutex.new
.
.
.
.
thread_a = Thread.new {
loop do
#some work
if(some_condition)
@semaphore.synchronize {
@thread_b_running = false
}
end
end
}
thread_b = Thread.new {
while(@semaphore.synchronize { @thread_b_running }) do
#thread_b's work
end
}
thread_a.join
thread_b.join
基本上,并行thread_a
地thread_b
做一些工作,但是当thread_a
看到一个事件发生时,它需要关闭thread_b
。正如您现在所看到的,我正在通过使用受互斥体保护的布尔值来做到这一点。我认为这种方法在性能方面并不算太差,因为thread_b
几乎总是会在不等待的情况下获得锁。但是,由于我没有编写很多多线程代码,我想知道是否有更好的方法来做我正在做的事情?