zoukankan      html  css  js  c++  java
  • linux线程绑定cpu

    函数介绍

    #define __USE_GNU
    #include <sched.h>
    
    void CPU_ZERO(cpu_set_t *set);
    void CPU_SET(int cpu, cpu_set_t *set);
    void CPU_CLR(int cpu, cpu_set_t *set);
    int  CPU_ISSET(int cpu, cpu_set_t *set);
    

    法一

    int cpu = 0;
    cpu_set_t mask;
    
    CPU_ZERO(&mask);
    CPU_SET(cpu, &mask);
    
    if(pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0)
    {
    	perror("pthread_setaffinity_np");
    }
    

    法二

    int cpu = 1;
    cpu_set_t mask;
    
    CPU_ZERO(&mask);
    CPU_SET(cpu, &mask);
    
    sched_setaffinity(0, sizeof(cpu_set_t), &mask);
    

    int cpu:指定cpu使用。可以只使用一个核,也可以同时指定多核。实测还是指定一个核效果更好

    线程中使用

    void *func(void *ptr)
    {
    	pthread_detach(pthread_self());
    	
    	cpu_set_t mask;
    	
    	CPU_ZERO(&mask);
    	CPU_SET(1, &mask);
    	
    #if 0
    	if(pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0)
    	{
    		perror("pthread_setaffinity_np");
    	}
    #else
    	sched_setaffinity(0, sizeof(cpu_set_t), &mask);
    #endif
    	
    	while(1);
    }
    
  • 相关阅读:
    数据结构实验2-迷宫
    离散实验4
    关系代数中的除法运算
    数据库中什么叫象集
    (转)汇编-补码
    2014022201
    20140222
    2014022101
    代码20140221
    代码20140215
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709317.html
Copyright © 2011-2022 走看看