multithreading - 缺少OpenMP功能: Thread Priority

标签 multithreading openmp thread-priority

任何人都想一想。 OpenMP功能可调节cpu肌肉以处理dumbbel。在我对openmp的研究中,我们无法设置线程优先级来执行功能强大的块代码。只有一种方法(_beginthreadex或具有5.参数的CreateThread函数)可以创建具有最高优先级的线程。

以下是此问题的一些代码:

这是手动设置。

int numberOfCore = ( execute __cpuid to obtain number of cores on your cpu ).

HANDLES* hThreads = new HANDLES[ numberOfCore ];
hThreads[0] = _beginthreadex( NULL, 0, someThreadFunc, NULL, 0, NULL );

SetThreadPriority( hThreads[0], HIGH_PRIORITY_CLASS );

WaitForMultipleObjects(...); 

这是我想看的这部分:
#pragma omp parallel
{
#pragma omp for ( threadpriority:HIGH_PRIORITY_CLASS )
 for( ;; ) { ... }
}

或者
#pragma omp parallel
{
// Generally this function greatly appreciativable.
_omp_set_priority( HIGH_PRIORITY_CLASS );
#pragma omp for
 for( ;; ) { ... }
}

我不知道是否有一种方法可以通过openmp pls设置优先级。

最佳答案

您可以在循环的主体中执行SetThreadPriority,而无需OpenMP的特殊支持:

for (...)
{
  DWORD priority=GetThreadPriority(...);
  SetThreadPriority(...);
  // stuff
  SetThreadPriority(priority);
}

关于multithreading - 缺少OpenMP功能: Thread Priority,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671902/

相关文章:

c# - 具有固定键的字典上的多线程

java - 如何向 Java 线程传递参数?

windows - lua lane 线程间通信

c# - 异步操作等待或超时

java - 线程是否根据各自的优先级编号工作?

multithreading - 当线程数翻倍时,我的矩阵乘法程序需要四倍的时间

c++ - 如何并行化循环的矩阵排序?

c++ - 使用 openmp 优化循环

cuda - 是否可以处理进程之间的 GPU 优先级

c# - 更改线程优先级以使我的程序和计算机响应更快