多线程cpu affinity问题
为了提高多线程程序的性能,有时候需要将线程绑定到固定的cpu core上。 在这个过程中一不小心就会产生编译的问题,但是明明头文件都定义了,却依然编译通不过。 不巧我就遇到了,google也基本搜不到这个问题的解决方案,没办法,只能自己解决了。 下面这个程序就会出现这种问题: [cpp] view plaincopy #include <stdio.h> #include <pthread.h> #define __USE_GNU #include <sched.h> void mybind_cpu( int cpu_id) { cpu_set_t mask; //! sched_setaffinity CPU_ZERO(&mask); CPU_SET(cpu_id, &mask); if (sched_setaffinity(0, sizeof (cpu_set_t), &mask) < 0) { printf( "Error: cpu id %d sched_setaffinity\n" , cpu_id); printf( "Warning: performance may be impacted \n" ); } return ; } void test_thread( void *cpu_id) { int cpuid = ( int )( long )cpu_id;