我正在比較任務隊列/線程池模式系統和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