假设我们有:
然后,参与者C向参与者Z发出阻塞请求。
我包含了Actor Y,以允许它在Z处理来自C的请求时发送消息。
所有线程都在不同的物理核心上--它们并行运行。
Actor可以在任何线程上处理来自队列的消息--默认情况下,它们不固定到具体的线程(如果不使用固定的调度器)。简单地说,来自同一队列的不同消息可能在不同的线程上处理(由dispatcher选择)。
我想所谓的“线程限制演员”是指在一个或几个时刻(消息)内进行限制。因为dispatcher(默认情况下)可以为任何参与者/邮箱的任何消息选择任何线程。在实践中,有时它可能会选择相同的线程,但不总是这样。
因此,如果一个线程被阻塞,dispatcher(默认情况下)将转到另一个线程。如果有足够的线程,A
和B
可能会在C
完成之前接收消息。
请注意:虽然我更喜欢使用Akka的JavaAPI的解决方案(这就是我正在使用的),但我对任何工作解决方案都很满意,并且可能会想出如何将基于Scala的答案翻译成Java。 我有一个Akka应用程序,有很多演员,其中两个是和。actor可以接受两种类型的消息: ;和 执行器简单地接受一条消息。这些参与者和系统其他部分之间的消息流如下: 任何东西(其他参与者,甚至参与者系统之外的事件驱动组件)都可以随
问题内容: 我在芹菜中使用Python进行大量的(〜10 / sec)API调用(包括GET,POST,PUT,DELETE)。每个请求大约需要5-10秒才能完成。 我尝试在池中运行芹菜工人,并发数为1000。 由于正在阻塞进程,每个并发连接都在等待一个请求。 如何使异步? 问题答案: 使用eventlet Monkey patching使所有纯python库都无阻塞。 补丁单库 import e
java.util.concurrent.CompletionException:Akka.Pattern.AskTimeoutException:收件人[Actor[akka:/web_server/user/MyActor#-769383443]]已终止。发送者[null]发送了类型为“com.data.model.request”的消息。 所以我重写了方法,在那里添加了一个log语句。 现在
在AKKA文档中写道
问题内容: 我正在使用PHP从远程服务器下载一个(大)文件,并且此下载是通过单击网页上的下载按钮触发的。 因此,当我单击网页上的按钮时,就会向PHP函数发出请求(带有angulars )。该函数使用触发下载。 同时,我想使用Ajax向我的PHP网站提出其他请求。但是,只要下载正在进行,所有其他Ajax请求都会显示状态。 因此,基本上,下载阻止了对PHP的所有其他请求。有什么办法可以避免这种阻塞?