我现在正在编写一个 node.js 套接字应用程序。
由于它涉及一些 CPU 密集型任务,对于多连接任务来说会相当麻烦。
这就是问题所在:假设任务 A 是 CPU 密集型任务,它由连接 A 调用。假设任务 B 是非常轻量级的任务,它由所有其他连接调用,比如说 > 10k 连接。
当连接 A “几乎同时”调用大量任务 A 时(这在我的设计中是正常的,因为需要处理每个数据包)。任务将按如下方式安排:
- 任务 A
- 任务 A
- 任务 A
- 任务 A
- ....(可能是任务 A 的 10000 次)
- 任务 B
任务 B 不能在任务 A 任务中间中断。所以很可能,其他用户不能在这个 node.js 服务器上做任何事情。
除了线程/集群,有没有办法重新安排这样执行的任务,使任务 A 的优先级最低?
- 任务 A
- 任务 A
- 任务 B
- 任务 A
- 任务 A
- 任务 A
- 任务 A
- 任务 B
- 任务 A
- ……
谢谢!