将线程优先级设置为高C

时间:2014-12-19 02:04:58

标签: multithreading thread-priority

我正在编写一个程序,它将创建两个线程,其中一个必须具有高权限而另一个是默认的。我正在使用pthread_create()来创建线程,并希望从同一命令启动线程优先级。我这样做的方式如下:

pthread_create(& threads [lastThreadIndex],NULL,& solution,(void *)(& threadParam));

其中, threads:是一个pthread_t类型的数组,其中包含我的所有线程。 lastThreadIndex:是一个计数器 解决方案:是我的功能 threadParam:是一个包含解决方案函数所需的所有变量的结构。

我阅读了很多文章,其中大部分都建议用优先级替换NULL;但是,我从未找到关键词或准确的方法。

请帮忙......

谢谢

1 个答案:

答案 0 :(得分:1)

在POSIX中,第二个参数是pthread属性,而NULL只是意味着使用默认值。

但是,您可以创建自己的属性并设置其属性,包括通过以下方式提升优先级:

#include <pthread.h>
#include <sched.h>

int rc;
pthread_attr_t attr;
struct sched_param param;

rc = pthread_attr_init (&attr);
rc = pthread_attr_getschedparam (&attr, &param);
(param.sched_priority)++;
rc = pthread_attr_setschedparam (&attr, &param);

rc = pthread_create (&threads[lastThreadIndex], &attr,
    &solution, (void *)(&threadParam));

// Should really be checking rc for errors.

有关POSIX线程的详细信息,包括日程安排,可以从this page开始。