在运行gen_server
时,Erlang是否会利用多个内核?如果我在handle_cast
中有两个不同的gen_server
,并且他们经常被调用,那么它们可以并行运行吗?我问,因为我有一个设计,其中一个handle_cast
将数据输入到队列中,另一个设计从同一队列中删除数据并对其进行处理。队列保持在gen_server
状态。正如我所看到的,一个问题是我必须在返回状态时返回一个新队列(添加新项目,或删除检索到的项目)。如果它们并行运行,那么似乎可以在队列中形成竞争条件或不一致。是这种情况吗?
答案 0 :(得分:4)
你的问题的答案是否定的。 gen_server
在单个Erlang进程中运行。单个流程不能分解为可以同时运行的多个活动。