呼唤!!即使在调用者收到回复后(即:未来已准备好),从一个演员到另一名工作演员的方法似乎也保持通道打开。
例如,使用 !! 将 11 条不同的消息从一个 actor 发送到另一个 worker actor 将导致 11 条类似于下面的消息显示在原始调用者的邮箱中,每个具有不同的 Channel@xxxx 值。
!(scala.actors.Channel@11b456f,Exit(com.test.app.actor.QueryActor@4f7bc2,'normal))
这些消息是否在等待工作人员的回复,因为原始调用者是在它自己调用 exit() 时发送退出消息,或者它们是在另一端生成的,并且由于某种原因有上面显示的打印表单?至此,worker actor 已经退出,所以 !! 的原始调用者 绝对不会收到任何回复。
这种行为是不可取的,因为原始调用参与者的邮箱充满了这些退出消息(每次使用 !! 时创建的每个通道都有一个)。
这怎么能阻止?原始呼叫者是否自动“链接”到每个创建的回复频道!称呼?