→ Caesar08: 1.計時的部分,有個東西叫做chrono 03/23 09:13
→ Caesar08: 2.你的key能保證在EnterCriticalSection時,每個都不同 03/23 09:13
→ Caesar08: 嗎?如果不行,你沒辦法最大化效能 03/23 09:14
→ Caesar08: 3.你的thread沒做join,程式居然沒崩潰 03/23 09:14
→ Caesar08: 4.在你這情況,你用async會比你用thread好 03/23 09:15
→ Caesar08: 5.construct一個thread的成本的確很高,如果你要最大化 03/23 09:15
→ Caesar08: 效能,考慮使用threadpool 03/23 09:15
→ TeaEEE: 我猜是readfile這卡住你的thread效益 03/23 10:04
推 LiloHuang: VC++ 的 std::async() 底層已經有用 thread pool 03/23 12:10
→ LiloHuang: 如果沒記錯,也僅只於 VC++ 的實作有如此完善 :) 03/23 12:11
→ LiloHuang: 如果是我會直接用 Intel TBB library 發 tbb::task 03/23 12:11
→ LiloHuang: 或用微軟的 PPL 發 task 來做 task-based parallelism 03/23 12:12
推 LiloHuang: 稍微看了一下你的程式碼,還有 lock contention 的問題 03/23 12:16
→ LiloHuang: 除了 Caesar08 提到的得 join 之外,你得想辦法移掉 03/23 12:17
→ LiloHuang: 那個 critical secton,例如使用 thread local storage 03/23 12:18
→ LiloHuang: 如果上面都做了還是慢,裝一下 Intel VTune 分析一下 03/23 12:21
→ LiloHuang: fix typo : section 03/23 12:23
→ a2975313: critical section和mutex是實作lock的方式 03/23 13:58
→ a2975313: 如果使用join那就必須等到thread裡面執行完才能接下去跑 03/23 14:00
→ a2975313: 只是沒想到open thread比thread裡面做的事情還花時間 03/23 14:03