以下测试是为了验证setpriority函数对线程是否有效,理论上linux kernel是不区分调度是不区分线程和进程的。
用户线程和进程的区别是是否有独立的用户地址空间,线程的是共享的。
编译以下代码,运行 ./cpuidle.app 19 -19
可以看到打印 -19 优先级的线程打印会比 19优先级的线程多 400多次, 几乎满屏都是 -19优先级的打印。
当有-19的线程运行,整个系统都要明显卡顿和19的线程相比。
以上愚见或许有不对之处,请多多包涵。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>
#include <pthread.h>
#include<sys/resource.h>
static void *cpuidle_loop(void *arg)
{
int pri;
int size = 0, sum = 0;
unsigned long long int loopCnt=0;
struct timeval tv;
int ret;
pri = *(int *)arg;
printf("[%s]pri=%d\n", __func__, pri);
setpr