我正在编写一个程序,它将创建两个线程,其中一个必须具有高权限而另一个是默认的。我正在使用pthread_create()来创建线程,并希望从同一命令启动线程优先级。我这样做的方式如下:
pthread_create(& threads [lastThreadIndex],NULL,& solution,(void *)(& threadParam));
其中, threads:是一个pthread_t类型的数组,其中包含我的所有线程。 lastThreadIndex:是一个计数器 解决方案:是我的功能 threadParam:是一个包含解决方案函数所需的所有变量的结构。
我阅读了很多文章,其中大部分都建议用优先级替换NULL;但是,我从未找到关键词或准确的方法。
请帮忙......
谢谢
答案 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, ¶m);
(param.sched_priority)++;
rc = pthread_attr_setschedparam (&attr, ¶m);
rc = pthread_create (&threads[lastThreadIndex], &attr,
&solution, (void *)(&threadParam));
// Should really be checking rc for errors.
有关POSIX线程的详细信息,包括日程安排,可以从this page开始。