SetThreadAffinityMask用途

来源:互联网 发布:java多线程池 count 编辑:程序博客网 时间:2024/06/11 18:48

通过调用SetThreadAffinityMask,就能为各个线程设置亲缘性屏蔽: 


  DWORD_PTR SetThreadAffinityMask  ( 
     HANDLE  hThread,                            //  handle to  thread 
     DWORD_PTR  dwThreadAffinityMask   //  thread affinity  mask 
  ); 
  该函数中的 hThread  参数用于指明要限制哪个线程, dwThreadAffinityMask用于指明该线程 
 能够在哪个CPU上运行。dwThreadAffinityMask必须是进程的亲缘性屏蔽的相应子集。返回值 
 是线程的前一个亲缘性屏蔽。例如,可能有一个包含4个线程的进程,它们在拥有4个CPU的计算机上运行。如果这些线程中的一个线程正在执行非常重要的操作,而你想增加某个CPU始终可供它使用的可能性,为此你对其他3个线程进行了限制,使它们不能在CPU 0上运行,而只能在CPU 1、2和3上运行。因此,若要将3个线程限制到CPU 1、2和3上去运行,可以这样操作: 
   
  //线程0只能在cpu 0上运行 
 SetThreadAffinityMask(hThread0,0x00000001); 
  //线程1,2,3只能在cpu 1,2,3上运行 
 SetThreadAffinityMask(hThread1,0x0000000E); 
 SetThreadAffinityMask(hThread2,0x0000000E); 
 SetThreadAffinityMask(hThread3,0x0000000E); 
原创粉丝点击