LibPthread: Initialize conditions with realtime clock

All the way back in commit 1670ee5aba, the default clock for
condition variables was set to `CLOCK_MONOTONIC`, because there was no
other clock available.

However, if a condition variable is initialized without any additional
attributes by an application, they sometimes assume that the absolute
time that is passed to e.g. `pthread_cond_timedwait` is actually based
on a realtime clock, as can be seen here in SDL2:

6f419bdf5f/src/thread/pthread/SDL_syscond.c (L99)

Additionally, the glibc implementation defaults to a realtime clock:

aac54dcd37/nptl/pthread_cond_init.c (L42)

...so we probably should do so as well :^)
This commit is contained in:
Jelle Raaijmakers 2021-11-24 18:40:36 +01:00 committed by Andreas Kling
parent ce3a63253a
commit 30580ed7e4
Notes: sideshowbarker 2024-07-18 00:42:48 +09:00

View File

@ -48,7 +48,7 @@ int pthread_cond_init(pthread_cond_t* cond, const pthread_condattr_t* attr)
{
cond->mutex = nullptr;
cond->value = 0;
cond->clockid = attr ? attr->clockid : CLOCK_MONOTONIC_COARSE;
cond->clockid = attr ? attr->clockid : CLOCK_REALTIME_COARSE;
return 0;
}