將cpu使用權交給其他線程
⑴ 怎麼讓CPU線程全部使用
手動分配線程
系統自帶的任務管理器太過簡單,而且每次都要手動選擇,回麻煩。
所以用第三方答工具,比如THG Task Assignment Manager。
這是一款用在多處理器系統裡面分配任務的工具,為任務管理器的替代者很合適。
第二個面板才是這款軟體的重點,它可以指定分配方案,並且記住,下次只要再開程序還是會產生效果。分配方法是:用Browse找到要分配的程序,點Add後,指定一個線程。
把不同類型的工作,比如壓縮轉換格式和瀏覽網頁,掃描病毒和寫文章分配不同的線程,這樣比起操作系統自己分配要好,可以讓各個線程充分調用。
⑵ 如何設置進程(線程)在指定的CPU上運行
實現方法進程與指定cpu綁定 :SetProcessAffinityMask(GetCurrentProcess(),dwMask); 線程與指定cpu綁定: SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask為CPU序號的或運算值:1(0001) 代表只運行在CPU1,2(0010)代表只運行在CPU2,3(0011)代表可以運行在CPU1和CPU2 ,以此類推。 設置之前最好判斷一下系統有幾個CPU: SYSTEM_INFOSystemInfo; GetSystemInfo(&SystemInfo);CPU個數:SystemInfo.dwNumberOfProcessors 當前啟用的CPU序號: SystemInfo.dwActiveProcessorMask ,Mask representing the set of processors configured into the system. Bit 0 is processor 0; bit 31 is processor 31. CPU親緣性介紹 按照默認設置,當系統將線程分配給處理器時,Windows使用軟親緣性來進行操作。這意味著如果所有其他因素相同的話,它將設法在它上次運行的那個處理器上運行線程。讓線程留在單個處理器上,有助於重復使用仍然在處理器的內存高速緩存中的數據。 有一種新的計算機結構,稱為NUMA(非統一內存訪問),在該結構中,計算機包含若干塊插件板,每個插 件板上有4個CPU和它自己的內存區。 當CPU訪問的內存是它自己的插件板上的內存時,NUMA系統運行的性能最好。如果CPU需要訪問位於另一個插件板上的內 存時,就會產生巨大的性能降低。在這樣的環境中,就需要限制來自一個進程中的線程在共享同一個插件版的CPU上運行。為了適應這種計算機結構的需要,Windows允許你設置進程和線程的親緣性。換句話說,你可以控制哪個CPU能夠運行某些線程。這稱為硬親緣性。請注意,子進程可以繼承進程的親緣性。 注意:(1)無論計算機中實際擁有多少個CPU,Windows98及以前系統只使用一個CPU,上述API不被支持。 (2)在大多數環境中,改變線程的親緣性就會影響調度程序有效地在 各個CPU之間移植線程的能力,而這種能力可以最有效地使用CPU時間。 應用場景舉例: 將UI線程限制在一個CPU,將其他實時性要求較高的線程限制在另一個CPU。這樣,當UI需要佔用大量CPU時間時,就不會拖累其他實時性要求較高的線程的執行 。同樣可以將UI線程與一些優先順序不高但耗時的非同步運算線程設置在不同CPU上,避免UI給人卡頓的感覺。
⑶ 如何設置進程(線程)在指定的CPU上運行
實現方法進程與指定cpu綁定
:SetProcessAffinityMask(GetCurrentProcess(),dwMask);
線程與指定cpu綁定:
SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask為CPU序號的或運算值:1(0001)
代表只運行在CPU1,2(0010)代表只運行在CPU2,3(0011)代表可以運行在CPU1和CPU2
,以此類推。
設置之前最好判斷一下系統有幾個CPU:
SYSTEM_INFOSystemInfo;
GetSystemInfo(&SystemInfo);CPU個數:SystemInfo.dwNumberOfProcessors
當前啟用的CPU序號:
SystemInfo.dwActiveProcessorMask
,Mask representing the set of processors configured into the system. Bit 0 is processor 0;
bit 31 is processor 31.
CPU親緣性介紹
按照默認設置,當系統將線程分配給處理器時,Windows使用軟親緣性來進行操作。這意味著如果所有其他因素相同的話,它將設法在它上次運行的那個處理器上運行線程。讓線程留在單個處理器上,有助於重復使用仍然在處理器的內存高速緩存中的數據。
有一種新的計算機結構,稱為NUMA(非統一內存訪問),在該結構中,計算機包含若干塊插件板,每個插 件板上有4個CPU和它自己的內存區。
當CPU訪問的內存是它自己的插件板上的內存時,NUMA系統運行的性能最好。如果CPU需要訪問位於另一個插件板上的內 存時,就會產生巨大的性能降低。在這樣的環境中,就需要限制來自一個進程中的線程在共享同一個插件版的CPU上運行。
為了適應這種計算機結構的需要,Windows允許你設置進程和線程的親緣性。換句話說,你可以控制哪個CPU能夠運行某些線程。這稱為硬親緣性。請注意,子進程可以繼承進程的親緣性。
注意:(1)無論計算機中實際擁有多少個CPU,Windows98及以前系統只使用一個CPU,上述API不被支持。
(2)在大多數環境中,改變線程的親緣性就會影響調度程序有效地在 各個CPU之間移植線程的能力,而這種能力可以最有效地使用CPU時間。
應用場景舉例:
將UI線程限制在一個CPU,將其他實時性要求較高的線程限制在另一個CPU。這樣,當UI需要佔用大量CPU時間時,就不會拖累其他實時性要求較高的線程的執行
。同樣可以將UI線程與一些優先順序不高但耗時的非同步運算線程設置在不同CPU上,避免UI給人卡頓的感覺。
⑷ 一個線程通過什麼方法將處理器讓給另一個優先順序別相同的線程
實現方法進程與指定cpu綁定:(GetCurrentProcess(),dwMask);線程與指定cpu綁定:SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask為CPU序號的或運算值:1(0001)代表只運行在CPU1,2(0010)代表只運行在CPU2,3(0011)代表可以運行在CPU1和CPU2,以此類推。設置之前最好判斷一下系統有幾個CPU:SYSTEM_INFOSystemInfo;GetSystemInfo(&SystemInfo);CPU個數:SystemInfo.dwNumberOfProcessors當前啟用的CPU序號:SystemInfo.dwActiveProcessorMask,.Bit0isprocessor0;bit31isprocessor31.CPU親緣性介紹按照默認設置,當系統將線程分配給處理器時,Windows使用軟親緣性來進行操作。這意味著如果所有其他因素相同的話,它將設法在它上次運行的那個處理器上運行線程。讓線程留在單個處理器上,有助於重復使用仍然在處理器的內存高速緩存中的數據。有一種新的計算機結構,稱為NUMA(非統一內存訪問),在該結構中,計算機包含若干塊插件板,每個插件板上有4個CPU和它自己的內存區。當CPU訪問的內存是它自己的插件板上的內存時,NUMA系統運行的性能最好。如果CPU需要訪問位於另一個插件板上的內存時,就會產生巨大的性能降低。在這樣的環境中,就需要限制來自一個進程中的線程在共享同一個插件版的CPU上運行。為了適應這種計算機結構的需要,Windows允許你設置進程和線程的親緣性。換句話說,你可以控制哪個CPU能夠運行某些線程。這稱為硬親緣性。請注意,子進程可以繼承進程的親緣性。注意:(1)無論計算機中實際擁有多少個CPU,Windows98及以前系統只使用一個CPU,上述API不被支持。(2)在大多數環境中,改變線程的親緣性就會影響調度程序有效地在各個CPU之間移植線程的能力,而這種能力可以最有效地使用CPU時間。應用場景舉例:將UI線程限制在一個CPU,將其他實時性要求較高的線程限制在另一個CPU。這樣,當UI需要佔用大量CPU時間時,就不會拖累其他實時性要求較高的線程的執行。同樣可以將UI線程與一些優先順序不高但耗時的非同步運算線程設置在不同CPU上,避免UI給人卡頓的感覺。
⑸ 怎樣把一個線程綁定到固定的cpu上面
線程調度 計算機通常只有一個CPU,在任意時刻只能執行一條機器指令,每個線程只有獲得回CPU的使用權才能執行指令答。
所謂多線程的並發運行,其實是指從宏觀上看,各個線程輪流獲得CPU的使用權,分別執行各自的任務。
在運行池中,會有多個處於就緒狀態的線程
⑹ 如何在線程中途讓出 cpu 使用權
top[-][ddelay][q][c][s][S][i]d指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命版令來改變之。q該選項將使top沒有權任何延遲的進行刷新。如果調用程序有超級用戶許可權,那麼top將以盡可能高的優先順序運行。S指定累計模式。s使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。i使top不顯示任何閑置或者僵死進程。c顯示整個命令行而不只是顯示命令名
⑺ java中sleep方法不會釋放鎖,但是又說sleep會把執行權讓給其他線程,這不
因為鎖是對共享資源保護的一種手段,不釋放鎖 別的線程是拿不到資源的,但是別的線程不一定是拿這個資源啊,別的線程可以做其他的事啊
⑻ 如何把一個線程分配給一個具體的CPU來執行
CPU進行多線程切換時由硬體決定的,可以 通過軟體來控制嗎?
⑼ java討論新建的線程到底什麼時候獲得cup的使用權
1.start()後進入來就緒狀態,等CPU時間片源輪轉到進入執行狀態
2.執行過程中,如果發生中斷,比如時間片用完、該線程調用了wait方法、調用了sleep方法、等待資源,則進入就緒狀態,待該線程執行完或被強行終止進入死亡狀態,多線程的控制我目前認為就是通過sleep、wait、notify+同步鎖能夠控制一下,基本做到像流程語句一樣,不過應該沒這個必要