2010-06-24 48 views
3

我有一個4線程的應用程序,其中2個是基於事件的,2個不是基於事件的。通過Windows XP中的c程序製作一個獨立的進程?

問題是我不得不分離2個非基於事件的線程,其中在(1)循環執行,需要一個龐大的CPU使用率和該使用量達到甚至高達100%,

我想使這些隔離線程可以減少CPU使用率,如果有任何其他方法PLZ引用我,它會是一個好主意,

我也想知道如何隔離線程。

thanx提前。

+1

你是什麼意思隔離線程?設置處理器親和力? – icktoofay 2010-06-24 04:59:10

+0

嗯我該怎麼做 – Badr 2010-06-24 05:04:18

+2

你的CPU正在使用你的CPU嗎?或者他們只是忙着等待(在一個循環中等待工作)? – 2010-06-24 05:36:42

回答

2

作爲一般規則,您很少想簡單地減少CPU使用率。雖然你當然可以可以這樣做(例如,通過半定期睡覺一段時間),但它不會真正實現很多。當然,假設線程正在做一些有用的CPU時間,減少CPU使用率將簡單地延長計算時間。

爲了獲得真正的好處,請減少CPU密集型線程的優先級的。這允許線程儘快完成計算,只要它們是準備運行的唯一線程即可。同時,這也意味着優先級較低的線程將完全消耗 CPU時間只要有任何更高優先級的線程已準備好運行即可。

  1. 好吧,如果你想獲得的技術,Windows有一個抗飢餓機制,讓那些準備運行得到微不足道位的CPU時間低優先級的線程,但它是如此的小,它通常拿下不會影響更高優先級的線程以足夠注意。
+0

你想說簡單地給線程低優先級? – Badr 2010-06-24 05:29:58

+0

@moon:是的,這就是它,除非(當然),除非出於某種其他原因,你確實需要隔離它們(例如,它們會崩潰,並且希望能夠獨立於其餘部分殺死並重新啓動它們)應用程序 - 但正確的治療方法是阻止它們崩潰)。 – 2010-06-24 05:51:32

+0

如果基於非事件的線程應該執行更高優先級的任務會怎麼樣? – puffadder 2010-06-24 06:11:20

1

如果你讓你的線程在每次循環後短時間睡眠,那應該會減少CPU負載。

相關問題