【发布时间】:2018-01-13 13:20:29
【问题描述】:
Phoenix 框架上有一个应用程序。
需要 GenServer,它会检查一些值。
这些值的验证从控制器开始(请求来自客户端,GenServer 值检查,客户端收到响应)。
一旦handle_call是同步的,那么当10个客户端同时调用10个handle_call时会发生什么?所有 10 个调用将并行处理还是按队列顺序处理?
【问题讨论】:
标签: elixir gen-server
Phoenix 框架上有一个应用程序。
需要 GenServer,它会检查一些值。
这些值的验证从控制器开始(请求来自客户端,GenServer 值检查,客户端收到响应)。
一旦handle_call是同步的,那么当10个客户端同时调用10个handle_call时会发生什么?所有 10 个调用将并行处理还是按队列顺序处理?
【问题讨论】:
标签: elixir gen-server
GenServer 将只处理单个呼叫,其他消息将在邮箱中排队。如果需要同步进程,您可以允许这样做,但您必须考虑邮箱,它可能会在较重的负载下很快堆积起来,并可能在没有任何警告的情况下杀死 VM。
您是否考虑使用 Task 代替?
【讨论】: