• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            SetThreadAffinityMask設(shè)置使用多核CPU的哪個核心

            轉(zhuǎn)載自:http://cooker.javaeye.com/blog/652604

            MSDN上的描述: 
            1. SetThreadAffinityMask  
            2. The SetThreadAffinityMask function sets a processor affinity mask for the specified thread.  
            3.   
            4. DWORD_PTR SetThreadAffinityMask(  
            5.   HANDLE hThread,  
            6.   DWORD_PTR dwThreadAffinityMask  
            7. );  

            Parameters 
            hThread 
            [in] Handle to the thread whose affinity mask is to be set. 
            This handle must have the THREAD_SET_INFORMATION and THREAD_QUERY_INFORMATION access rights. For more information, see Thread Security and Access Rights. 

            dwThreadAffinityMask 
            [in] Affinity mask for the thread. 
            Windows Me/98/95:  This value must be 1. 

            Return Values 
            If the function succeeds, the return value is the thread's previous affinity mask. 

            Windows Me/98/95:  The return value is 1. To succeed, hThread must be valid and dwThreadAffinityMask must be 1. 

            If the function fails, the return value is zero. To get extended error information, call GetLastError. 

            Remarks 
            A thread affinity mask is a bit vector in which each bit represents the processors that a thread is allowed to run on. 

            A thread affinity mask must be a proper subset of the process affinity mask for the containing process of a thread. A thread is only allowed to run on the processors its process is allowed to run on. 



            通過調(diào)用SetThreadAffinityMask,就能為各個線程設(shè)置親緣性屏蔽: 

            C++代碼 
            1. DWORD_PTR SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);  


            該函數(shù)中的h T h r e a d參數(shù)用于指明要限制哪個線程, dwThreadAffinityMask用于指明該線程能夠在哪個CPU上運(yùn)行。dwThreadAffinityMask必須是進(jìn)程的親緣性屏蔽的相應(yīng)子集。返回值是線程的前一個親緣性屏蔽。 

            因此,若要將3個線程限制到CPU1、2和3上去運(yùn)行,可以這樣操作: 

            C++代碼 
            1. //Thread 0 can only run on CPU 0.  
            2.   
            3. SetThreadAffinityMask(hThread0, 0x00000001); //第0位是1  
            4.   
            5. //Threads 1, 2, 3 run on CPUs 1, 2, 3.//第1 2 3位是1  
            6.   
            7. SetThreadAffinityMask(hThread1, 0x00000002);  
            8.   
            9. SetThreadAffinityMask(hThread2, 0x00000003);  
            10.   
            11. SetThreadAffinityMask(hThread3, 0x00000004);  




            本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/W511522329/archive/2010/03/06/5352597.aspx 

            C++代碼 
            1. #include "stdafx.h"  
            2. #include <windows.h>    
            3. #include <string>  
            4. #include <iostream>  
            5. void running(int seconds)  {      
            6.         Sleep(seconds*1000);  
            7.         std::cout<<"sleep for "<<seconds<<"(s)"<<std::endl;  
            8. }    
            9.   
            10. int _tmain(int argc, _TCHAR* argv[])  
            11. {  
            12.     SetThreadAffinityMask(GetCurrentThread(), 1);  
            13.     LARGE_INTEGER start, end;            
            14.     LARGE_INTEGER freq;   
            15.     //timeConsuming();  
            16.     QueryPerformanceFrequency(&freq);  
            17.     QueryPerformanceCounter(&start);//start  
            18.   
            19.   
            20.     std::cout<<"start.QuadPart = "<<start.QuadPart<<std::endl;         //output start   
            21.     running(10); //running 10 seconds  
            22.     QueryPerformanceCounter(&end); //end  
            23.     std::cout<<"end.QuadPart = "<<end.QuadPart<<std::endl;    //output end   
            24.   
            25.     std::cout<<"consume value = end.QuadPart - start.QuadPart = "<<(end.QuadPart - start.QuadPart)<<std::endl;   
            26.     std::cout<<"(consume value/(double)freq.QuadPart) Time consumed = "<<(end.QuadPart - start.QuadPart)/(double)freq.QuadPart<<"(s)"<<std::endl;  //output consumed time  
            27.     return 0;  
            28. }  





            start.QuadPart = 49102789906513 
            sleep for10(s) 
            end.QuadPart = 49127801303663 
            consume value = end.QuadPart - start.QuadPart = 25011397150 
            (consume value/(double)freq.QuadPart) Time consumed = 10.0046(s)

            posted on 2010-10-31 15:59 楊粼波 閱讀(4818) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久国产精品麻豆AR影院| 久久久久亚洲AV成人网| 2021最新久久久视精品爱| 亚洲国产精品无码久久久久久曰| 精品国产乱码久久久久久人妻| 亚洲va中文字幕无码久久不卡| 亚洲国产精品无码久久久蜜芽| 久久综合丝袜日本网| 狠狠色婷婷久久综合频道日韩| 91视频国产91久久久| 久久无码专区国产精品发布| WWW婷婷AV久久久影片| 久久免费香蕉视频| 国产精品久久久久影院色| 四虎影视久久久免费| 久久综合久久久| 日韩AV无码久久一区二区 | 99久久亚洲综合精品网站| 亚洲AV无码久久| 久久无码一区二区三区少妇 | 久久www免费人成看国产片| 伊人久久大香线蕉亚洲五月天| 久久国产精品99精品国产987| 中文字幕久久精品无码| 国产成人精品久久综合| 国产麻豆精品久久一二三| 亚洲精品无码久久久影院相关影片| 久久精品亚洲乱码伦伦中文| 国内精品久久国产大陆| 97久久超碰国产精品旧版| 久久精品一本到99热免费| 久久久久久久久66精品片| 国产亚洲色婷婷久久99精品91| 久久精品国产91久久综合麻豆自制| 亚洲日韩中文无码久久| 精品久久久无码人妻中文字幕| 亚洲国产成人精品91久久久 | 久久亚洲AV无码精品色午夜麻豆| 久久中文精品无码中文字幕| 久久伊人色| 久久热这里只有精品在线观看|