Rebol 3中的所有端口操作都是异步的。我发现进行同步通信的唯一方法是调用wait
。
但是在这种情况下调用wait的问题是它将检查所有打开的端口的事件(即使它们不在传递给wait的端口块中)。然后他们调用响应的事件处理程序,但是可以在这些事件处理程序之一中进行读/写。这可能导致递归调用“等待”。
我该如何解决?
8
实际上,我认为当前的R3实现中没有解决方案,因此我继续在“ wait”中添加了“ / only”优化,这样,它只会在提供给“ wait”的端口上等待,从而避免了递归调用。请参阅我的拉取请求:github.com/rebol/rebol/pull/177
—
曾世信
出于好奇,您为什么需要使其同步?
—
toadzky 2015年
在许多情况下,使用同步端口进行编码要容易得多:假设您想通过单击按钮发送电子邮件,并报告其成功或失败。在执行其他任何操作之前,等待它完成要容易得多。
—
曾世信
您绝对必须使用Rebol吗?
—
Rivenfall 2015年
是。实际上,这实际上是关于Rebol 3的一个问题,而不是同步通信。
—
曾世信