Differences From Artifact [485a93cc19]:
- File
src/runtime/threading.m
— part of check-in
[0f42b0eafd]
at
2018-01-21 22:16:23
on branch trunk
— Allow building the runtime as a .framework
This also renames ObjFW-RT to ObjFW_RT, as hyphens should not be in
framework names. (user: js, size: 1202) [annotate] [blame] [check-ins using]
To Artifact [f965e6303e]:
- File
src/runtime/threading.m
— part of check-in
[885d84a1a7]
at
2018-03-18 01:01:42
on branch trunk
— socket.m: Minor cleanup
This should make the init behavior the same for --enable-threads and
--disable-threads. (user: js, size: 1203) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
21 22 23 24 25 26 27 | #include <stdlib.h> #import "ObjFW_RT.h" #import "private.h" #import "threading.h" static of_rmutex_t global_mutex; | < > | 21 22 23 24 25 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 | #include <stdlib.h> #import "ObjFW_RT.h" #import "private.h" #import "threading.h" static of_rmutex_t global_mutex; static void init(void) { if (!of_rmutex_new(&global_mutex)) 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(&global_mutex)) OBJC_ERROR("Failed to lock global mutex!"); } void objc_global_mutex_unlock(void) { if (!of_rmutex_unlock(&global_mutex)) OBJC_ERROR("Failed to unlock global mutex!"); } |