Concurrency 如何将任务异步添加到tango(D)线程池?

Concurrency 如何将任务异步添加到tango(D)线程池?,concurrency,threadpool,d,tango,Concurrency,Threadpool,D,Tango,我将任务队列/线程池模式系统与D中的n线程系统进行比较。我对D编程语言非常陌生,但以前曾在C、Java和Python中使用过线程。我正在使用Tango库,并以构建Web服务器为例 我决定使用tango.core.ThreadPool作为我的线程池,因为我的项目主要关注传统线程和任务队列之间的易用性和性能 显示我有3个选项: ThreadPool.wait()-在线程池使用队列中的任务时阻止当前线程 ThreadPool.shutdown()-完成池中的任务,但不完成队列中的任务 ThreadPo

我将任务队列/线程池模式系统与D中的n线程系统进行比较。我对D编程语言非常陌生,但以前曾在C、Java和Python中使用过线程。我正在使用Tango库,并以构建Web服务器为例

我决定使用
tango.core.ThreadPool
作为我的线程池,因为我的项目主要关注传统线程和任务队列之间的易用性和性能

显示我有3个选项:

  • ThreadPool.wait()
    -在线程池使用队列中的任务时阻止当前线程
  • ThreadPool.shutdown()
    -完成池中的任务,但不完成队列中的任务
  • ThreadPool.finish()
    -完成池和队列中的所有任务,但不再接受
  • 这些东西都不是我想要的。据我所知,您的任务列表应该能够在这些系统中增长。web服务器非常简单和幼稚;我只是希望它尽最大努力扩展到许多并发请求,即使它的资源管理只包括尽可能快地消耗任务队列中的内容

    我怀疑这是因为主线程需要连接其他线程,但我对线程知识有点生疏。

    怎么办?从文档中,它的工作方式类似于java表单中的
    Executor.execute(Runnable)
    form(提交一个任务以在将来某个时候运行)

    请注意,这里是后进先出队列,而不是预期的先进先出队列,因此分配足够的工作人员如何?从文档中,它的工作方式类似于java表单中的
    Executor.execute(Runnable)
    form(提交一个任务以在将来某个时候运行)


    请注意,这里是一个后进先出队列,而不是预期的先进先出队列,因此分配足够的工作人员

    我发现我构造委托的方式导致代码的某些部分阻塞。我现在将该对象作为参数传递给我的委托,而不是关闭由
    SocketServer.accept
    返回的对象。我不知道为什么这是一个解决方案,但该计划现在工作的预期。我听说D版本1中的闭包被破坏了;也许这与此有关。

    我发现我构造委托的方式在代码的某些部分造成了阻塞。我现在将该对象作为参数传递给我的委托,而不是关闭由
    SocketServer.accept
    返回的对象。我不知道为什么这是一个解决方案,但该计划现在工作的预期。我听说D版本1中的闭包被破坏了;也许这与此有关。

    我一直在使用append;我想知道我是否做错了什么,因为将
    -c2
    与apache基准测试一起使用会导致某些东西卡住。我确实看到评论说它是一个堆栈而不是一个队列;我想知道他们为什么做出这样的决定;我想知道我是否做错了什么,因为将
    -c2
    与apache基准测试一起使用会导致某些东西卡住。我确实看到评论说它是一个堆栈而不是一个队列;我想知道他们为什么做出这样的决定。为什么不使用D2?它具有良好/更好的并行性功能。@Daevius:否则,Brian必须放弃探戈。@Daevius:我被限制在D v。1因为我的发展环境;LDC和Tango是唯一可用的装船工具。为什么不使用D2?它具有良好/更好的并行性功能。@Daevius:否则,Brian必须放弃探戈。@Daevius:我被限制在D v。1因为我的发展环境;“探戈”最不发达国家是唯一可用的装船方式。