Document that wxThread::SetPriority() is broken under Unix
The code setting thread priority doesn't work without changing the scheduling policy as thread priorities are simply ignored when using the default SCHED_OTHER (at least under Linux and NetBSD, but probably other systems too). See #18195.
This commit is contained in:
@@ -1248,6 +1248,9 @@ public:
|
|||||||
be only set after creating the thread with CreateThread(). But under
|
be only set after creating the thread with CreateThread(). But under
|
||||||
all platforms this method can be called either before launching the
|
all platforms this method can be called either before launching the
|
||||||
thread using Run() or after doing it.
|
thread using Run() or after doing it.
|
||||||
|
|
||||||
|
Please note that currently this function is not implemented when using
|
||||||
|
the default (@c SCHED_OTHER) scheduling policy under POSIX systems.
|
||||||
*/
|
*/
|
||||||
void SetPriority(unsigned int priority);
|
void SetPriority(unsigned int priority);
|
||||||
|
|
||||||
|
@@ -1005,6 +1005,12 @@ static bool SetThreadPriority(pthread_attr_t& attr, int prio)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: on most (all?) systems, thread priorities can't be used with
|
||||||
|
// SCHED_OTHER policy, so we need to check if this is the current
|
||||||
|
// policy and change it to something else (SCHED_FIFO or SCHED_RR?)
|
||||||
|
// in order to be able to actually change the priority as without
|
||||||
|
// doing it the code below just not going to work.
|
||||||
|
|
||||||
#ifdef __VMS__
|
#ifdef __VMS__
|
||||||
/* the pthread.h contains too many spaces. This is a work-around */
|
/* the pthread.h contains too many spaces. This is a work-around */
|
||||||
# undef sched_get_priority_max
|
# undef sched_get_priority_max
|
||||||
|
Reference in New Issue
Block a user