给出以下代码,我想知道假设pthreads甚至使用Boost.Thread API在linux中等效的代码是什么。
#include <windows.h> int main() { SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST); return 0; }
相当于SetThreadPrioritylinux中的pthread_setschedprio(pthread_t thread, int priority)。
SetThreadPriority
pthread_setschedprio(pthread_t thread, int priority)
检查手册页。
编辑:这是等效的示例代码:
#include <pthread.h> int main() { pthread_t thId = pthread_self(); pthread_attr_t thAttr; int policy = 0; int max_prio_for_policy = 0; pthread_attr_init(&thAttr); pthread_attr_getschedpolicy(&thAttr, &policy); max_prio_for_policy = sched_get_priority_max(policy); pthread_setschedprio(thId, max_prio_for_policy); pthread_attr_destroy(&thAttr); return 0; }
此示例适用于默认调度策略SCHED_OTHER。
编辑:线程属性必须在使用之前初始化。