windows/linux避免多线程应用程序在多核间切换,影响程序效率

本文介绍了如何在Windows和Linux平台上通过设置线程亲和性来避免多线程应用程序在多核间切换,从而提高程序效率。在Windows下使用SetThreadAffinityMask函数,Linux下使用pthread_setaffinity_np。这种方法适用于线程数量不多且有高实时性需求的情况,如网络摄像头数据获取线程。
摘要由CSDN通过智能技术生成

个人在编写应用程序时,需要指定某个线程在cpu特定核上运行,通过测试,发现应用该函数,对应用程序的效率有很大提高。但是也不是对所有情况都试用:个人认为该优化方法要求线程数量不能太多,其中有一个线程执行频率较高,对实时性要求比较高,比如网络摄像头数据获取线程等等。

在windows平台下的函数为:DWORD_PTR SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);其中hThread 为要指定的线程,dwThreadAffinityMask为被指定CPU的核ID,如果为四核处理器,则可以为0x00000001,0x00000002,0x00000004,0x00000008。

在linux平台下的函数为:   int pthread_setaffinity_np(pthread_t thread,size_t cpusetsize,const_cpu_set_t *cpuset);

int pthread_getaffinity_np(pthread_t thread,size_t cpusetsize,const_cpu_set_t *cpuset);

***因为对linux不是很了解,所以在此不进行详细介绍,有兴趣的朋友,可以度娘一下

//指定主线程在cpu的某个核

#include <windows.h>
HANDLE hThread;
int main()
{
hThread = GetCurrentThread();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值