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:
Vadim Zeitlin
2018-08-16 13:14:19 +02:00
parent 51c8496087
commit cec14a334c
2 changed files with 9 additions and 0 deletions

View File

@@ -1248,6 +1248,9 @@ public:
be only set after creating the thread with CreateThread(). But under
all platforms this method can be called either before launching the
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);

View File

@@ -1005,6 +1005,12 @@ static bool SetThreadPriority(pthread_attr_t& attr, int prio)
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__
/* the pthread.h contains too many spaces. This is a work-around */
# undef sched_get_priority_max