基本上我有一個任務和一個線程類,我創建的線程數量等於物理內核(或邏輯內核,因爲在英特爾CPU內核上它們是雙倍數)。如果僅創建一次,使用數百個線程安全嗎?
所以基本上線程從任務列表中獲取任務並執行它們。但是,我必須確保一切安全,並且多個線程不會一次嘗試執行相同的任務,當然這會引入額外的開銷(和頭痛)。
我把任務功能放在線程中嗎?我的意思是 - 而不是4個線程從200個任務池中抓取任務,爲什麼不是200個線程以4 * 4組的方式執行,基本上我不需要同步任何東西,不鎖定,沒有任何東西。當然,我不會在整個運行時創建線程,只是在初始化時。
這樣的方法有什麼優點和缺點?我可以簡化的一個問題是 - 因爲我只在初始化時創建線程,所以它們的計數是固定的,而在任務中,我可以繼續在任務池中傾倒更多任務。
你會如何只有四個線程運行?當然你需要以某種方式同步這個動作? – GManNickG
看起來你是在生產者消費者隊列之後。這裏有一些很好的閱讀:http://www.1024cores.net/home/lock-free-algorithms/queues – Carl