任何人都想想吧。 OpenMP 具有调整 CPU 能力来处理哑铃的功能。在我对 openmp 的研究中,我们无法设置线程优先级来以强大的力量执行块代码。 5. 只有一种方法(_beginthreadex 或带参数的 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( ;; ) { ... }
}
Or
#pragma omp parallel
{
// Generally this function greatly appreciativable.
_omp_set_priority( HIGH_PRIORITY_CLASS );
#pragma omp for
for( ;; ) { ... }
}
我不知道是否有办法使用 openmp 设置优先级,请告知我们。
你可以做SetThreadPriority
在循环体中,无需 OpenMP 的特殊支持:
for (...)
{
DWORD priority=GetThreadPriority(...);
SetThreadPriority(...);
// stuff
SetThreadPriority(priority);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)