我正在比较任务队列/线程池模式系统和D中的n -threads系统。我对D编程语言非常陌生,但之前曾在C,Java和Python中使用过线程。我正在使用Tango库,并且正在构建一个Web服务器。如何异步添加任务到探戈(D)ThreadPool?
我决定使用tango.core.ThreadPool
作为我的线程池,因为我的项目侧重于传统线程和任务队列之间的易用性和性能。
的documentation表明,我有3个选项:
ThreadPool.wait()
- 阻止当前线程,而池从队列中消耗的任务。ThreadPool.shutdown()
- 完成池中的任务,但不是中的那些队列中的任务。ThreadPool.finish()
- 完成池和队列中的所有任务,但不再接受。
这些都不是我想要的。我的理解是,您的任务列表应该能够在这些系统中发展。网络服务器非常简单而幼稚;我只是希望它尽量扩展到许多并发请求,即使其资源管理只包含尽可能快地消耗任务队列中的内容。
我怀疑这是因为主线程需要连接其他线程,但我对线程知识有点生疏。
为什么不使用D2?它具有好/更好的并行性功能。 –
@Daevius:除此之外,Brian必须向Tango宣誓。 – menjaraz
@Daevius:由于我的开发环境,我被限制在D版本1中;拥有Tango的LDC是唯一可用的装备。 – Brian