线程微信小程序 多线程如何将指定线程绑定到指定的CPU上运行

windows平台下
Qt线程 怎么样绑定到指定的CPU核上,求方法。。。
[问题点数:40分]
windows平台下
Qt线程 怎么样绑定到指定的CPU核上,求方法。。。
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年 总版技术专家分年内排行榜第二
2013年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|【编程】把某个线程指定到某个cpu核心去&c++
// ddfsafds.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include &windows.h&
#include &strsafe.h&
#include &iostream&
DWORD WINAPI threadtest( LPVOID lpParam )
&float d = 1.1111f;
d;//变态的超大计算量,但本计算属于低优先级,比如:远方物体的预加载
int _tmain(int argc, _TCHAR* argv[])
&HANDLE hThread[2];
&DWORD dwThreadId[2];
&//创建2个计算量超大的低等级线程
&hThread[0] = CreateThread(NULL, 0,threadtest, 0,
0, &dwThreadId[0]);
&hThread[1] = CreateThread(NULL, 0,threadtest, 0,
0, &dwThreadId[1]);
&//优化!关闭优化,那么你的机器会超级卡,cpu利用率暴增到100%
&SetThreadAffinityMask(hThread[0],
&SetThreadAffinityMask(hThread[1],
&&cout&&"1";
&&Sleep(10);
&return 0;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博客分类:
因为最近在看multiprocessing 所以想看看多进程在多cpu机器上的利用率.然后早上写了个脚本在i5(4核),起了4个进程,发现只有一颗cpu跑的比较高,然后觉得不是很舒服.
开始还不知道就在晚上找是不是有什么方法可以指定某个cpu去执行一个进程,后来发现python有个第三方的库http://pypi.python.org/pypi/affinity/0.1.0,可以做这件事.看了下代码基本都是调用了系统的affinity mask的API.
我就在windows上装了试了下,貌似还真有点用.
看了下代码,一共也就3个方法,用起来很方便.
_get_handle_for_pid(pid, ro=True)
通过一个pid获取进程
get_process_affinity_mask(pid)
通过pid获取这个进程当前的affinity mask ,返回一个长整形('2l',就是在用2这个cpu)
set_process_affinity_mask(pid, value)
绑定pid这个进程到value所指的这个cpu上去(set_process_affinity_mask(3516, 1),就是用1这个cpu去执行pid为3516这个进程)
&&&import multiprocessing, time, signal
&&&import affinity
#我用multiprocessing创建了个进程
&&&p = multiprocessing.Process(target=time.sleep, args=(1000,))
&&&p.start()
&&&pid=p.pid
&&&print pid
#先看了下5604这个进程用的是那个cpu
&&&affinity.get_process_affinity_mask(pid)
#将5604这个进程用2这个cpu跑
&&&affinity.set_process_affinity_mask(pid, 2L)
&&&affinity.get_process_affinity_mask(pid)
还有就是我发现在linux上多进程和多线程系统内核调度的还是很平均的所以一般不会用到这些,只是今天好奇就看了下.
by:pako
email:
浏览: 215113 次
来自: 上海
那要是周排名月排名呢
仁兄能否将affinity_0.1.0发我一份?在我这该网站无 ...
wifi 调试 adb shell 的话 是 transpor ...
一定要有SGMLParser.__init__(self)
支持一下,我刚开始学python,感觉不错,就是文档太少了。
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'windows下绑定线程(进程)到指定的CPU核心
一个程序指定到单独一个CPU上运行会比不指定CPU运行时快。这中间主要有两个原因:
1)CPU切换时损耗的性能。
2)Intel的自动降频技术和windows的机制冲突:windows有一个功能是平衡负载,可以将一个线程在不同时间分配到不同CPU,从而使得每一个CPU不“过累”。然而,Inter又有一个技术叫做SpeedStep,当一个CPU没有满负荷运行时自动降频从而达到节能减排的目的。这两个功能实际是冲突的:一个程序被分配到多个CPU协同工作-&每个CPU都不是满载-&每个CPU都会降频-&windows发现每个CPU性能都降低了,因此程序执行速度也降低了。
因此,将线程(进程)绑定到指定CPU核心,从而不让windows自作主张帮我们分散任务,从而提高单线程效率是很有必要的。有两种方法实现绑定进程到指定CPU:
1)手工调节:在资源管理器的进程里面,设置相关性,可以设置进程到某个或者某些指定的CPU核心。
这种方法最简便,同样是最优效率的,因为你可以根据当前CPU的负载情况进行选择。
2)代码自动调节:
参考:http://www.cnblogs.com/kex1n/archive//2040924.html
具体函数为:
DWORD_PTR SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);
其中,第一个参数为线程句柄,第二个参数为一个mask。
如果要知道当前线程的句柄,可以通过函数:GetCurrentThread()得到。否则,在创建多线程的时候,也同样可以得到创建的线程的句柄。
第二个参数为mask,可取值为0~2^31(32位)和0~2^63(64位),每一位代表每一个CPU是否使用。
比如,你要指定进程到第0个CPU上,则mask=0×01
第1个CPU:mask=0×02
第2个CPU:mask=0×04 (注意不是0×03)
第3个CPU:mask=0×08
以此类推。
如果要指定多个CPU:
比如第0、1个:mask=0×03
第1、2个:mask=0×06
以此类推。
如果CPU个数不足,则会进行取模操作。比如一共4个CPU,则mask=0×0010则和0×01一样。
这种方法的好处是多线程时不用每次都手动选择CPU,缺点是万一选到的CPU负载很高,那么程序执行速度就慢了(英雄所见略同所以大家都抢到同一个CPU去了么~~)
效果如下图所示:
还有一个实用的函数来获取当前CPU的核心数量:
SYSTEM_INFO
GetSystemInfo(&info);
printf("Number of processors: %d.\n", info.dwNumberOfProcessors);
输出的是逻辑核心数量,比如i3处理器就是双核心四线程,输出4。i5处理器是四核心四线程,输出也是4。
这样就可以方便的知道当前系统一共有多少个CPU了,同时也方便了线程数选择。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!在VB中如何让线程或进程在指定的CPU上运行_百度知道
在VB中如何让线程或进程在指定的CPU上运行
我有更好的答案
实现方法进程与指定cpu绑定:SetProcessAffinityMask(GetCurrentProcess(), dwMask);线程与指定cpu绑定:SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask为CPU序号的或运算值:1(0001)代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2,以此类推。设置之前最好判断一下系统有几个CPU:SYSTEM_INFO SystemIGetSystemInfo(&SystemInfo);CPU个数:SystemInfo.dwNumberOfProcessors当前启用的CPU序号:SystemInfo.dwActiveProcessorMask,Mask representing the set of processors configured into the system. Bit 0 is processor 0; bit 31 is processor 31.
采纳率:96%
来自团队:
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 steam线程修复程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信