12 #include <mrpt/config.h> 16 #ifdef MRPT_OS_WINDOWS 23 #include <sys/select.h> 34 #include <sys/types.h> 36 #include <mach/mach_init.h> 37 #include <mach/thread_act.h> 38 #include <sys/sysctl.h> 45 #ifdef MRPT_OS_WINDOWS 47 SetThreadPriority(GetCurrentThread(), priority);
49 const pthread_t tid = pthread_self();
52 struct sched_param
param 56 if (0 != (ret = pthread_getschedparam(tid, &policy, &
param)))
59 <<
"[mrpt::system::changeThreadPriority] Warning: Failed call to " 60 "pthread_getschedparam (error: `" 61 << strerror(ret) <<
"`)" << std::endl;
66 int min_prio = sched_get_priority_min(policy),
67 max_prio = sched_get_priority_max(policy);
68 if (min_prio < 0) min_prio = 1;
69 if (max_prio < 0) max_prio = 99;
78 prio = (max_prio + 3 * min_prio) / 4;
81 prio = (max_prio + 2 * min_prio) / 3;
84 prio = (max_prio + min_prio) / 2;
87 prio = (2 * max_prio + min_prio) / 3;
90 prio = (3 * max_prio + min_prio) / 4;
97 param.sched_priority = prio;
98 if (0 != (ret = pthread_setschedparam(tid, policy, &
param)))
101 <<
"[mrpt::system::changeThreadPriority] Warning: Failed call to " 102 "pthread_setschedparam (error: `" 103 << strerror(ret) <<
"`)" << std::endl;
111 #ifdef MRPT_OS_WINDOWS 116 dwPri = IDLE_PRIORITY_CLASS;
119 dwPri = NORMAL_PRIORITY_CLASS;
122 dwPri = HIGH_PRIORITY_CLASS;
125 dwPri = REALTIME_PRIORITY_CLASS;
130 SetPriorityClass(GetCurrentProcess(), dwPri);
151 const int ret = nice(nice_val);
152 if (ret == -1 && errno == EPERM)
154 std::cerr <<
"[mrpt::system::changeCurrentProcessPriority] Error " 155 "calling nice(): Not enough permissions.\n";
void changeCurrentThreadPriority(TThreadPriority priority)
Change the priority of the current thread - for Windows, see also changeCurrentProcessPriority() ...
#define THROW_EXCEPTION(msg)
Win32: THREAD_PRIORITY_ABOVE_NORMAL.
void changeCurrentProcessPriority(TProcessPriority priority)
Change the priority of the given process (it applies to all the threads, plus independent modifiers f...
TProcessPriority
The type for cross-platform process (application) priorities.
Win32: THREAD_PRIORITY_LOWEST.
Win32: THREAD_PRIORITY_IDLE.
Win32: THREAD_PRIORITY_NORMAL.
TThreadPriority
The type for cross-platform thread priorities.
Win32: THREAD_PRIORITY_TIME_CRITICAL.
Win32: THREAD_PRIORITY_HIGHEST.
Win32: THREAD_PRIORITY_BELOW_NORMAL.