看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 1. 印象中的ThreadPool是一開始就開啟N條thread 在需要執行特定工作時再喚起閒置中的thread開工 _beginthreadex雖然會回傳一個HANDLE並保證是有效的 但其工作一開始就必須在參數裡指定好 所以就算我手上握有HANDLE 在它完工之後 也只能乖乖的把它CloseHandle() 換句話說 一個thread終其一生就只做同一件事 這樣似乎並沒有達到所謂Pool的概念 如果我沒記錯的話 _beginthreadex和for loop這種東西一樣 都是需要成本的 在有需要時才執行_beginthread 理論上是否會造成效率低落? 個人認為是會 2. 再者 依據平台的不同 可開啟的thread數量亦不相同 以512MB記憶體 每個thread的default stack size 2MB來算 可開啟至多256個thread 我想問的是執行一次_beginthreadex就扣一個可用的thread 而執行一次CloseHandle()就還回去 這樣嗎? 3. 若機器為N核心 是否代表"同時運行"的thread個數以<=N為準則? 因為有看到超過N會有thread互搶資源而導致效率不彰的說法 但其實可開啟的thread個數遠超過核心數 所以對此說法還是有點疑問 以上問題 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.26.249.44
purpose:虛擬記憶體,不夠用硬碟空間,不受實體記憶體限制 11/19 22:03