【发布时间】:2013-11-26 05:23:19
【问题描述】:
Rebol 3 中的所有端口操作都是异步的。我能找到进行同步通信的唯一方法是调用wait。
但是在这种情况下调用 wait 的问题是它会检查所有打开端口的事件(即使它们不在传递给 wait 的端口块中)。然后他们调用他们的响应事件处理程序,但可以在其中一个事件处理程序中完成读/写。这可能会导致递归调用“等待”。
我该如何解决这个问题?
【问题讨论】:
-
实际上,我认为在当前的 R3 实现中没有解决方案,所以我继续为“等待”添加一个“/only”改进,它只会等待在提供给“等待”的端口上,从而避免递归调用。请参阅我的拉取请求:github.com/rebol/rebol/pull/177
-
出于好奇,为什么需要同步?
-
在很多情况下使用同步端口编码要容易得多:假设您想通过单击按钮发送电子邮件,并报告它是成功还是失败。在做任何其他事情之前等待它完成要容易得多。
-
你一定要使用 Rebol 吗?
-
是的。这实际上更多是关于 Rebol 3 的问题,而不是一般的同步通信。
标签: asynchronous io rebol rebol3