在clojure文档中,我看到代理使用一个线程池来处理数据。但我读到了(总是在文档中):
所有代理的操作在线程中的线程之间交错 池。在任何时间点,每个代理最多只有一个动作 执行。
为什么代理有一个线程池而不是一个线程来处理已发送函数的“队列”?
感谢。
答案 0 :(得分:2)
代理没有“拥有线程池”。有两个线程池(用于send
和send-off
操作),可以为其分配代理操作。
此设计决策是CPU绑定任务的最佳选择,也是IO绑定任务的最佳方法。
对于后一种情况,提供自己的池send-via
将是最佳选择(假设您知道自己在做什么)。