• <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>

            牽著老婆滿街逛

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

            SetThreadAffinityMask設置使用多核CPU的哪個核心

            轉載自: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. 



            通過調用SetThreadAffinityMask,就能為各個線程設置親緣性屏蔽: 

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


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

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

            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博客,轉載請標明出處: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 楊粼波 閱讀(4817) 評論(0)  編輯 收藏 引用

            久久中文骚妇内射| 国产精品亚洲美女久久久| yy6080久久| 伊人久久大香线焦AV综合影院| 日本精品久久久久影院日本| 久久夜色精品国产亚洲av| 亚洲午夜无码久久久久小说| 99久久精品国产一区二区 | 久久乐国产精品亚洲综合 | 久久精品国产亚洲AV无码偷窥| 久久偷看各类wc女厕嘘嘘| 一级做a爰片久久毛片人呢| 久久只有这里有精品4| 狠狠色丁香久久婷婷综合五月| 精品人妻伦九区久久AAA片69| 国内精品久久久久久久久电影网 | 国产精品久久久久天天影视| 久久国产视屏| jizzjizz国产精品久久| 色老头网站久久网| 久久精品亚洲乱码伦伦中文| 久久综合狠狠综合久久| 久久人人爽人人精品视频| 久久99精品久久久久久动态图 | 久久久久亚洲AV片无码下载蜜桃| 久久99国产亚洲高清观看首页 | 九九久久99综合一区二区| 亚洲国产成人久久综合一区77| 免费观看久久精彩视频| 777午夜精品久久av蜜臀| 日本久久中文字幕| 久久久久婷婷| 国产午夜精品久久久久九九电影| 国产产无码乱码精品久久鸭| 久久久无码精品亚洲日韩蜜臀浪潮| 狠狠综合久久综合中文88| 精品久久久久久亚洲| 久久精品嫩草影院| 久久精品中文字幕久久| 久久亚洲精品视频| 国产综合精品久久亚洲|