Shi*_*eng 108 io asynchronous rebol rebol3
Rebol 3中的所有端口操作都是异步的.我可以找到进行同步通信的唯一方法是调用wait.
但是在这种情况下调用wait的问题是它将检查所有开放端口的事件(即使它们不在传递给等待的端口块中).然后他们调用响应事件处理程序,但可以在其中一个事件处理程序中完成读/写操作.这可能导致递归调用"等待".
我该如何解决这个问题?
Riv*_*all -1
你可以只使用一把锁。Cummunication1 可以设置一些全局锁定状态,即使用变量(确保它是线程安全的)。locked = true。然后Communication2就可以等待,直到它被解锁。
loop do
sleep 10ms
break if not locked
end
locked = true
handle_communication()
Run Code Online (Sandbox Code Playgroud)