0
有哪些工具可用於故障排除並行程序?並行代碼故障排除
說我有一個比預期更差的代碼(4次,而不是理論上的8倍的串行版本執行速度)。我懷疑原因是由訪問共享變量的線程(比如共享向量的相鄰元素)導致的某種鎖定,或者由訪問堆的線程(我認爲它也是共享資源)導致的鎖定。但我不知道有什麼工具可用來檢查可能導致過多的線程睡眠,線程切換等的原因。 profiler會告訴我哪個函數花了多少時間,也許有很多與線程管理有關的活動,但不是線程的原因和狀態(或者我不知道如何使用它)。
我在C++工作在OS X
不錯,但沒有任何代碼沒有幫助。這裏沒有算命先生! – 2013-02-20 08:45:18
如果更多人會說真的很需要,我可以發佈一些違規代碼,但我在處理一系列問題時詢問可用的工具,而不是針對特定問題的解決方案。 – Puchatek 2013-02-20 08:53:32
VS中有一個很好的用於dotnet的並行分析器(顯示哪個線程正在等待什麼),但我不知道任何其他平臺的工具。您始終可以通過爲每個可能等待的代碼部分(如同步基元)進行計時開始。將測量的等待時間轉儲到日誌。如果出現某種爭議,您有機會計算出詳細信息。 – 2013-02-20 08:54:55