SCHED_FIFO与SCHED_OTHER调度机制
疑问 两个线程分别有不同的调度策略,一个SCHED_FIFO,一个SCHED_OTHER,按照之前的理解,SCHED_FIFO实时线程一定会占用CPU一直运行,导致SCHED_OTHER的普通线程得不到CPU,事实是这样么? 验证 写了一小段代码,一个是验证SCHED_FIFO的高优先级线程会不会抢占低优先级的线程,在不主动放弃的情况下一直运行,一个是测试普通优先级的线程会不会得到CPU时间; 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #define __USE_GNU 5 #include <pthread.h> 6 #include <sched.h> 7 8 long long a = 0; 9 long long b = 0; 10 11 int attach_cpu(int cpu_index) 12 { 13 int cpu_num = sysconf(_SC_NPROCESSORS_CONF); 14 if (cpu_index < 0 || cpu_index >= cpu_num) 15 { 16 printf("cpu index ERROR!\n"); 17 return -1; 18 } 19 20 cpu_set_t mask; 21 CPU_ZERO(&mask)