1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 08:07:34 +00:00

LibPthread: Implement pthread_once()

The implementation uses atomics and futexes (yay!) and is heavily based on the
implementation I did for my learning project named "Let's write synchronization
primitives" [0].

That project, in fact, started when I tried to implement pthread_once() for
Serenity (because it was needed for another project of mine, stay tuned ;) ) and
was not very sure I got every case right. So now, after learning some more about
code patterns around atomics and futexes, I am reasonably sure, and it's time to
contribute the implementation of pthread_once() to Serenity :^)

[0] To be published at https://github.com/bugaevc/lets-write-sync-primitives
This commit is contained in:
Sergey Bugaev 2020-11-24 20:45:28 +03:00 committed by Andreas Kling
parent f6f0d3cbae
commit 3ac0c9b9e7
4 changed files with 110 additions and 2 deletions

View file

@ -78,7 +78,7 @@ struct utimbuf {
typedef int pthread_t;
typedef int pthread_key_t;
typedef void* pthread_once_t;
typedef int32_t pthread_once_t;
typedef struct __pthread_mutex_t {
uint32_t lock;