A new version of the POSIX standard has recently been published. This includes a new set of thread functions originally proposed by me so that I could implement them in Glibc.
I proposed these functions so that I could fix the implementation of
std::condition_variable::wait_for
and std::condition_variable::wait_until
to work correctly when the system clock is warped. This can happen
particularly at boot time on devices that lack a real time clock. You
can learn more about this problem in my earlier blog
post and about how it is fixed
in GCC 10 and later provided you have Glibc 2.30 or later. I ended
up proposing a whole set of functions to fix the problem for mutexes and
read-write locks too along with adding new non-standard
pthread_clockjoin_np
function.
It’s now nearly a decade since I first started trying to fix this
problem so it is great to see the new standard version be published.
Looking at the search results for pthread_cond_clockwait
I
didn’t really realise how annoying it would be for people attempting to
run binaries compiled against new C libraries with older versions.
Thanks to everyone who reviewed my text and code changes and did the hard work of publishing a new standard.