線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:6360
推到 Plurk!
推到 Facebook!

在多核(多cpu)下指定process執行於單一核心(cpu)

 
johnlp
一般會員


發表:2
回覆:13
積分:8
註冊:2004-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-30 14:42:59 IP:59.120.xxx.xxx 訂閱
近年多核心cpu當道
早期開發的某些程式,在多核心的環境下有時會出現莫名其妙的錯誤。
經測試後發現,只要在工作管理員裡的設定相關性指定程式執行於單一cpu,則這些錯誤就不再出現。

不過每次執行程式前要手動做這個動作也是滿麻煩的一件事。
於是開始著手找設定方式。

但找了半天,不論是設定檔或是登錄檔都沒有這類的設定方法。
最後才找到必須用 api

使用方式如下:
<textarea name="code" class="cpp" rows="10" cols="90"> HANDLE hProcess = GetCurrentProcess(); DWORD dwProcessAffinityMask, dwSystemAffinityMask; GetProcessAffinityMask( hProcess, &dwProcessAffinityMask, &dwSystemAffinityMask ); // 取得 process Affinity mask SetProcessAffinityMask( hProcess, 1L );// 執行於 CPU 0 SetProcessAffinityMask( hProcess, 2L );// 執行於 CPU 1 SetProcessAffinityMask( hProcess, 3L );// 允許執行與CPU 0 與 CPU 1 (32bit mask) </textarea>
編輯記錄
johnlp 重新編輯於 2007-05-30 14:44:48, 註解 無‧
johnlp 重新編輯於 2007-05-30 14:46:24, 註解 無‧
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-02 10:34:10 IP:59.105.xxx.xxx 訂閱
真是太好了,感謝分享  


===================引 用 johnlp 文 章===================
近年多核心cpu當道
早期開發的某些程式,在多核心的環境下有時會出現莫名其妙的錯誤。
經測試後發現,只要在工作管理員裡的設定相關性指定程式執行於單一cpu,則這些錯誤就不再出現。

不過每次執行程式前要手動做這個動作也是滿麻煩的一件事。
於是開始著手找設定方式。

但找了半天,不論是設定檔或是登錄檔都沒有這類的設定方法。
最後才找到必須用 api

使用方式如下:
<textarea cols="90" rows="10" class="cpp" name="code">HANDLE hProcess = GetCurrentProcess(); DWORD dwProcessAffinityMask, dwSystemAffinityMask; GetProcessAffinityMask( hProcess, &dwProcessAffinityMask, &dwSystemAffinityMask ); // 取得 process Affinity mask SetProcessAffinityMask( hProcess, 1L );// 執行於 CPU 0 SetProcessAffinityMask( hProcess, 2L );// 執行於 CPU 1 SetProcessAffinityMask( hProcess, 3L );// 允許執行與CPU 0 與 CPU 1 (32bit mask) </textarea>
------
http://www.ViewMove.com
系統時間:2024-04-24 22:32:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!