美文网首页全栈工程师C#.NET
Process和Thread在指定CPU运行

Process和Thread在指定CPU运行

作者: 4588e4274830 | 来源:发表于2016-08-17 15:39 被阅读271次

最近帮朋友写了一个多线程程序,他那边一运行多线程就出错,我这边却没有任何问题,找了好久才找到解决方法,原来是CPU的问题,有朋友遇到同样的问题,可以一起参考

//进程与指定cpu绑定

SetProcessAffinityMask(GetCurrentProcess(), dwMask);

//线程与指定cpu绑定

SetThreadAffinityMask(GetCurrentThread(),dwMask);

dwMask为CPU序号的或运算值:1(0001)代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2,以此类推。

//使用8核CPU

SetThreadAffinityMask(-1,254)

因此,若要将3个线程限制到CPU1、2和3上去运行,可以这样操作

//Thread 0 can only run on CPU 0. 

SetThreadAffinityMask(hThread0, 0001); //第0位是1

SetThreadAffinityMask(hThread1, 0002); 

SetThreadAffinityMask(hThread2, 0003); 

SetThreadAffinityMask(hThread3, 0004);

如果要将3个进程限制到CPU1、2和3上去运行,可以这样操作

SetProcessAffinityMask( hProcess0, 0001);// use CPU 0 only

SetProcessAffinityMask( hProcess1, 0002 );// use CPU 1 only

SetProcessAffinityMask( hProcess2, 0003 );// allow running on both CPUs

SetProcessAffinityMask( hProcess3, 0004 );// use CPU 4 only

应用场景举例:

将UI线程限制在一个CPU,将其他实时性要求较高的线程限制在另一个CPU。这样,当UI需要占用大量CPU时间时,就不会拖累其他实时性要求较高的线程的执行。同样可以将UI线程与一些优先级不高但耗时的异步运算线程设置在不同CPU上,避免UI给人卡顿的感觉。


相关文章https://support.microsoft.com/zh-cn/kb/932375

https://support.microsoft.com/zh-cn/kb/932375

http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=90685

http://bbs.eyuyan.com/read.php?tid=391246

http://blog.csdn.net/baodi_z/article/details/1857820

http://blog.csdn.net/harbinzju/article/details/7023630

http://www.cnblogs.com/altitude/archive/2011/06/29/2243507.html

相关文章

  • Process和Thread在指定CPU运行

    最近帮朋友写了一个多线程程序,他那边一运行多线程就出错,我这边却没有任何问题,找了好久才找到解决方法,原来是CPU...

  • 进程和线程和协程

    进程process和线程thread都是一个时间段的描述,是CPU工作时间段的描述。 由于CPU的运行速度过快,它...

  • OpenFastPath 学习6 (default_event_

    在我的udpecho中,并未指定CPU核,gdb时发现有thread 6~11均在运行 default_event...

  • 46. 分布式进程

    在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到...

  • 浏览器的进程

    进程 (process) 和线程 (thread) 进程(process)和线程(thread)是操作系统的基本概...

  • 线程1--线程和进程的区别和其他术语

    进程(process)和线程(thread)是操作系统的基本概念。进程和线程都是CPU工作时间段的描述。 背景:由...

  • 悲观锁和乐观锁 我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮...

  • 第二十三章、AtomicInteger源码分析—基于CAS的乐观

    1. 悲观锁与乐观锁 cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行...

  • 进程和线程的一个简单解释

    process进程和thread线程是操作系统的基本概念, cpu 进程 线程 互斥锁 信号量 操作系统的设计,可...

  • Android面试之Thread

    ## Thread 相关知识点整理 1,Thread的作用,Process和Thread的区别 2,Thread的...

网友评论

    本文标题:Process和Thread在指定CPU运行

    本文链接:https://www.haomeiwen.com/subject/gzmmsttx.html