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);
    }
    
  • 相关阅读:
    02_类和对象
    Django_数据库增删改查——增
    Django_同步数据库
    Django_models类属性。
    CSS_垂直居中
    CSS_背景属性
    CSS_定位
    CSS_浮动
    CSS_盒子模型
    CSS_元素的分类
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709317.html
Copyright © 2011-2022 走看看