日期:2014-05-16  浏览次数:20961 次

多线程程序优先级设定
int main()
{
int i,N=30000;
#pragma parallel for num_threads(20)
for(i=0;i<N;i++)
  {
 test();
  }
test()的运算量很大,系统有24个核心。如果在这个程序运行时候,我希望一直是20个核心%100的执行这个程序,其它人再运行其它程序的时候不会影响我这个程序的运行(即,不会占用我的程序用到的核心)。怎么实现呢?如何设定执行优先级?如何更改呢?
多线程 Parallel 优先级 C/C++

------解决方案--------------------
不太懂,但是要改线程优先级,就要在创建线程的时候添加线程属性参数,并将进程的调度方式改为FIFO或者RR.
------解决方案--------------------
那就是我说的创建线程的时候添加线程属性,pthread_attribute,属性里有个数值可以设置1-99 你设置成最高的就好了.
------解决方案--------------------
linux的线程优先级貌似不管用吧
------解决方案--------------------
引用:
Quote: 引用:

那就是我说的创建线程的时候添加线程属性,pthread_attribute,属性里有个数值可以设置1-99 你设置成最高的就好了.


主要是,在Openmp下我不知道它是如何创建线程的,所以不知道怎么添加。想上边的这个程序,你觉得如何添加呢?

这个我就不知道了,不过如果你用的Openmp要是不支持线程优先级,那也就无法实现你所说的设定优先级了.在posix下,线程是支持优先级的.