我現在正在爲服務器客戶端應用程序工作(僅用於學習目的),並且正在嘗試獲取有關此應用程序中有關線程的設計決策的信息。多線程vs單線程
目前我有一個線程負責與客戶端的所有非阻塞io。當它接收到任何數據時,它將它發送給一個工作線程,該線程從這些字節中創建一個「指令集」,然後相應地對其執行操作。但是,根據指令集,它可以對任意數量的數百個對象起作用(每個對象將在2到12個可以與之交互的客戶端之間加蓋)。我想知道是否應該處理同一個線程上的所有指令集,並且在處理每個集合時阻塞,或者如果我應該爲每個對象創建單獨的線程,然後將每個接收到的指令集傳遞給給定的對象線程處理。
我的問題歸結爲什麼時候(如果有的話)有更多不活動的線程正在等待數據減慢系統,相比之下,有一個工作線程處理所有數據(以及處理每條指令時的塊組)。
如果我爲每個對象創建了一個單獨的線程,那麼我認爲它可以增加併發性,因爲一旦主工作線程創建了一個指令集,它就可以傳遞它來處理,並且無意地開始處理下一個指令系統。
但是,我一直聽說如何創建和管理線程有一個底層成本,因爲操作系統必須管理它們。因此,如果我爲最多可以有2個客戶端進行交互的對象創建一個線程,管理它的底層成本會否定它的併發利益,只有2個客戶端可以利用該併發?
與往常一樣,任何意見/文章不勝感激:)
這是一個更優雅的解決方案,然後我就是想象。謝謝:) – vimalloc 2010-07-28 00:31:33