最近寫了一個程式(原始碼太長就不貼了),大概功能就是用控制器來啟動除錯器行程,然后每個除錯器將除錯分析結果通過管道回傳給控制器,然后控制器對這個回傳結果進行排序。
然后我為了提高效率,采用的方法是:控制器同時起動多個執行緒,每個執行緒內部再CreateProcess起一個除錯器行程,然后執行緒內收到除錯器行程的回傳結果后,在臨界區對回傳結果排序(排序鏈表是全域變數,對其互斥訪問已經實作了,測驗過沒問題)。
按照當初的設想,比方說我將同時啟動的除錯器行程值設為五,那就會同時啟動五個執行緒,每個執行緒又會啟動一個除錯器行程,最終實作五個除錯器行程一起作業。
但是實際測驗的時候發現,程式雖然能跑起來而且結果也是對的,但是速度和原來單行程的速度差不多,打開任務管理器一看才發現壓根就沒有同時啟動多個行程,一直只有一個除錯器行程在跑。
通信、互斥等方面都沒問題,寫了兩天了實在是頭疼了,師傅們救救我吧!
uj5u.com熱心網友回復:
寫日志 逐步分析uj5u.com熱心網友回復:
CreateProcess呼叫成功了嗎?有的行程不支持同時開啟多個的。uj5u.com熱心網友回復:
使用微軟的Process Explorer工具軟體看一下, 其它幾個除錯行程阻塞在哪里轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/50063.html
標籤:進程/線程/DLL
