Rebol 3 中的所有端口操作都是异步的。我可以找到进行同步通信的唯一方法是调用 wait

但是在这种情况下调用 wait 的问题是它会检查所有打开端口的事件(即使它们不在传递给 wait 的端口块中)。然后他们调用他们的响应事件处理程序,但读/写可以在这些事件处理程序之一中完成。这可能导致递归调用“等待”。

我该如何解决这个问题?

最佳答案

为什么不创建一种“缓冲区”函数来接收来自异步条目的所有消息并将它们作为 FIFO(先进先出)进行处理?

通过这种方式,您可以保留端口的 Assync 特性并以同步模式处理它们。

关于asynchronous - 同步读/写端口时避免递归?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19956665/

10-15 03:05
查看更多