linux降低线程优先级,Linux线程优先级,行为不正常
在下面的代碼片段中,我創(chuàng)建了6個(gè)線程。各有不同的優(yōu)先級(jí)。全局優(yōu)先級(jí)數(shù)組中提到了優(yōu)先級(jí)。我正在根據(jù)線索索引在每個(gè)線程內(nèi)連續(xù)增加全局變量。如果線程優(yōu)先級(jí)更高,我期待計(jì)數(shù)更高。但我的輸出不遵循優(yōu)先概念pl。請(qǐng)參閱下面顯示的輸出順序。我在Ubuntu 16.04和Linux內(nèi)核4.10上嘗試了這一點(diǎn)。Linux線程優(yōu)先級(jí),行為不正常
O/P,
Thread=0
Thread=3
Thread=2
Thread=5
Thread=1
Thread=4
pid=32155 count=4522138740
pid=32155 count=4509082289
pid=32155 count=4535088439
pid=32155 count=4517943246
pid=32155 count=4522643905
pid=32155 count=4519640181
代碼:
#include
#include
#define FAILURE -1
#define MAX_THREADS 15
long int global_count[MAX_THREADS];
/* priority of each thread */
long int priority[]={1,20,40,60,80,99};
void clearGlobalCounts()
{
int i=0;
for(i=0;i
global_count[i]=0;
}
/**
thread parameter is thread index
**/
void funcDoNothing(void *threadArgument)
{
int count=0;
int index = *((int *)threadArgument);
printf("Thread=%d\n",index);
clearGlobalCounts();
while(1)
{
count++;
if(count==100)
{
global_count[index]++;
count=0;
}
}
}
int main()
{
int i=0;
for(int i=0;i
create_thread(funcDoNothing, i,priority[i]);
sleep(3600);
for(i=0;i
{
printf("pid=%d count=%ld\n",getpid(),
global_count[i]);
}
}
create_thread(void *func,int thread_index,int priority)
{
pthread_attr_t attr;
struct sched_param schedParam;
void *pParm=NULL;
int id;
int * index = malloc(sizeof(int));
*index = thread_index;
void *res;
/* Initialize the thread attributes */
if (pthread_attr_init(&attr))
{
printf("Failed to initialize thread attrs\n");
return FAILURE;
}
if(pthread_attr_setschedpolicy(&attr, SCHED_FIFO))
{
printf("Failed to pthread_attr_setschedpolicy\n");
return FAILURE;
}
if (pthread_attr_setschedpolicy(&attr, SCHED_FIFO))
{
printf("Failed to setschedpolicy\n");
return FAILURE;
}
/* Set the capture thread priority */
pthread_attr_getschedparam(&attr, &schedParam);;
schedParam.sched_priority = sched_get_priority_max(SCHED_FIFO) - 1;
schedParam.sched_priority = priority;
if (pthread_attr_setschedparam(&attr, &schedParam))
{
printf("Failed to setschedparam\n");
return FAILURE;
}
pthread_create(&id, &attr, (void *)func, index);
}
總結(jié)
以上是生活随笔為你收集整理的linux降低线程优先级,Linux线程优先级,行为不正常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js 条码枪扫描_年会展台 精彩不断 |
- 下一篇: 鸿蒙系统的适配国产手机,真正的好消息!其