Differences From Artifact [e792c643b3]:
- File src/runtime/threading.m — part of check-in [c7f0229795] at 2020-01-02 01:51:34 on branch trunk — Update copyright (user: js, size: 1220) [annotate] [blame] [check-ins using] [more...]
To Artifact [4a1cc07735]:
- File
src/runtime/threading.m
— part of check-in
[5b37fbeb82]
at
2020-12-20 21:26:08
on branch trunk
— Return error instead of using errno for threading
errno is problematic for Amiga libraries and is also not thread-safe on
some systems, even though it should. (user: js, size: 1232) [annotate] [blame] [check-ins using] [more...]
︙ | ︙ | |||
26 27 28 29 30 31 32 | #import "once.h" static of_rmutex_t globalMutex; static void init(void) { | | | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #import "once.h" static of_rmutex_t globalMutex; static void init(void) { if (of_rmutex_new(&globalMutex) != 0) OBJC_ERROR("Failed to create global mutex!"); } void objc_global_mutex_lock(void) { static of_once_t once_control = OF_ONCE_INIT; of_once(&once_control, init); if (of_rmutex_lock(&globalMutex) != 0) OBJC_ERROR("Failed to lock global mutex!"); } void objc_global_mutex_unlock(void) { if (of_rmutex_unlock(&globalMutex) != 0) OBJC_ERROR("Failed to unlock global mutex!"); } |