我有一個主線程程序和診斷線程之前限制線程的運行時間。主線程基本上是一個while(1)
循環,執行各種任務。其中一項任務是爲診斷引擎提供有關係統的信息,然後稍後再檢查(即在下一個循環中)以查看是否有任何問題需要處理。主循環的迭代時間不應超過0.1秒。如果一切正常,那麼診斷引擎幾乎沒有時間回覆答案。但是,如果出現問題,診斷引擎可能需要幾秒鐘才能確定問題。由於這個原因,每次診斷引擎收到新的信息時,它都會啓動一個新的診斷線程。升壓線程:是否有可能移動到另一個線程
我們遇到的問題是,診斷線程正在偷離主線程的時間。實際上,儘管我們有兩個線程,但主線程無法按照我的意願運行,因爲診斷線程仍在旋轉。
使用Boost線程,是否可以在移動到另一個線程之前限制線程可以運行的時間量?此處的重要性在於,我們使用的診斷算法是blackbox,所以我們不能在其中放置任何線程代碼。謝謝!
由於我*很*新線程編程,肯定有可能我誤解了事情。然而你引用的例子更可能是一個糟糕的選擇。如果我有線程A和線程B,那麼我希望操作系統能夠很快地在A和B之間來回切換,因此對於線程A中的GUI用戶來說,A總是處於打開狀態。在我看來,操作系統似乎允許線程B在切換回線程A之前運行2秒。爲什麼會這樣呢? (另外,請告訴我,如果我仍然對某些線程問題感到困惑。) – JnBrymn 2010-09-19 00:44:12
線程不會像這樣阻塞。你的操作系統不應該允許這個。但是,應該可以使用您的分析器來確定在每個線程中花費的實際時間。 – rlbond 2010-09-19 00:57:39
我從未使用過探查器。任何建議?我的IDE是Eclipse CDT,我正在使用gnu工具鏈(gcc,g ++,make,gdb)。 – JnBrymn 2010-09-19 01:08:09