gpt4 book ai didi

Scala Actors : if react never returns, 为什么需要循环{},为什么 while(true) 不起作用?

转载 作者:行者123 更新时间:2023-12-03 03:36:38 25 4
gpt4 key购买 nike

刚刚开始使用 Scala Actors。 Scala website说:

Thread-blocking operations can be avoided by using react to wait for new messages (the event-based pendant of receive). However, there is a (usually small) price to pay: react never returns.

...

Note that using react inside a while loop does not work! However, since loops are common there is special library support for it in form of a loop function. It can be used like this:

loop {
react {
case A => ...
case B => ...
}
}

我现在很困惑 - 似乎有一个矛盾:

a) 如果 react 永远不会返回,那么将其放入循环中有何意义?

b) 由于 loop 重复执行一个 block ,它与 while(true) 有什么不同 - 为什么 while 不起作用,以及在什么情况下它“不起作用”?

最佳答案

loopreact 这两个函数都不是纯粹的。 loop 通过名称参数进行调用,react 接受 PartialFunction,两者都在原始 actor 上设置变量。这是因为 Actor 并不总是有一条线索。仅当其消息框中有消息时,它才会变为事件状态。这就是为什么 while(true) 会导致 100% cpu 使用率并且 actor 没有响应。

关于Scala Actors : if react never returns, 为什么需要循环{},为什么 while(true) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com