aboutsummaryrefslogtreecommitdiff
path: root/src/threading.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/threading.h18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/threading.h b/src/threading.h
index 608f916..38a021f 100644
--- a/src/threading.h
+++ b/src/threading.h
@@ -7,8 +7,6 @@
7 */ 7 */
8#include "platform.h" 8#include "platform.h"
9 9
10typedef unsigned int uint_t;
11
12#include <time.h> 10#include <time.h>
13 11
14/* Note: ERROR is a defined entity on Win32 12/* Note: ERROR is a defined entity on Win32
@@ -60,14 +58,14 @@ enum e_status { PENDING, RUNNING, WAITING, DONE, ERROR_ST, CANCELLED };
60 58
61 #if _WIN32_WINNT < 0x0600 // CONDITION_VARIABLE aren't available, use a signal 59 #if _WIN32_WINNT < 0x0600 // CONDITION_VARIABLE aren't available, use a signal
62 60
63 typedef struct 61 struct SIGNAL_T
64 { 62 {
65 CRITICAL_SECTION signalCS; 63 CRITICAL_SECTION signalCS;
66 CRITICAL_SECTION countCS; 64 CRITICAL_SECTION countCS;
67 HANDLE waitEvent; 65 HANDLE waitEvent;
68 HANDLE waitDoneEvent; 66 HANDLE waitDoneEvent;
69 LONG waitersCount; 67 LONG waitersCount;
70 } SIGNAL_T; 68 };
71 69
72 70
73 #define MUTEX_T HANDLE 71 #define MUTEX_T HANDLE
@@ -89,7 +87,7 @@ enum e_status { PENDING, RUNNING, WAITING, DONE, ERROR_ST, CANCELLED };
89 87
90 #define MUTEX_RECURSIVE_INIT(ref) MUTEX_INIT(ref) /* always recursive in Win32 */ 88 #define MUTEX_RECURSIVE_INIT(ref) MUTEX_INIT(ref) /* always recursive in Win32 */
91 89
92 typedef unsigned int THREAD_RETURN_T; 90 using THREAD_RETURN_T = unsigned int;
93 91
94 #define YIELD() Sleep(0) 92 #define YIELD() Sleep(0)
95 #define THREAD_CALLCONV __stdcall 93 #define THREAD_CALLCONV __stdcall
@@ -124,9 +122,9 @@ enum e_status { PENDING, RUNNING, WAITING, DONE, ERROR_ST, CANCELLED };
124 #define MUTEX_LOCK(ref) pthread_mutex_lock(ref) 122 #define MUTEX_LOCK(ref) pthread_mutex_lock(ref)
125 #define MUTEX_UNLOCK(ref) pthread_mutex_unlock(ref) 123 #define MUTEX_UNLOCK(ref) pthread_mutex_unlock(ref)
126 124
127 typedef void * THREAD_RETURN_T; 125 using THREAD_RETURN_T = void *;
128 126
129 typedef pthread_cond_t SIGNAL_T; 127 using SIGNAL_T = pthread_cond_t;
130 128
131 void SIGNAL_ONE( SIGNAL_T *ref ); 129 void SIGNAL_ONE( SIGNAL_T *ref );
132 130
@@ -154,7 +152,7 @@ void SIGNAL_ALL( SIGNAL_T *ref );
154* 0.0 for instant check 152* 0.0 for instant check
155* >0.0 absolute timeout in secs + ms 153* >0.0 absolute timeout in secs + ms
156*/ 154*/
157typedef double time_d; 155using time_d = double;
158time_d now_secs(void); 156time_d now_secs(void);
159 157
160time_d SIGNAL_TIMEOUT_PREPARE( double rel_secs ); 158time_d SIGNAL_TIMEOUT_PREPARE( double rel_secs );
@@ -169,7 +167,7 @@ bool SIGNAL_WAIT( SIGNAL_T *ref, MUTEX_T *mu, time_d timeout );
169 167
170#if THREADAPI == THREADAPI_WINDOWS 168#if THREADAPI == THREADAPI_WINDOWS
171 169
172 typedef HANDLE THREAD_T; 170 using THREAD_T = HANDLE;
173# define THREAD_ISNULL( _h) (_h == 0) 171# define THREAD_ISNULL( _h) (_h == 0)
174 void THREAD_CREATE( THREAD_T* ref, THREAD_RETURN_T (__stdcall *func)( void*), void* data, int prio /* -3..+3 */); 172 void THREAD_CREATE( THREAD_T* ref, THREAD_RETURN_T (__stdcall *func)( void*), void* data, int prio /* -3..+3 */);
175 173
@@ -197,7 +195,7 @@ bool SIGNAL_WAIT( SIGNAL_T *ref, MUTEX_T *mu, time_d timeout );
197# endif 195# endif
198# endif 196# endif
199 197
200 typedef pthread_t THREAD_T; 198 using THREAD_T = pthread_t;
201# define THREAD_ISNULL( _h) 0 // pthread_t may be a structure: never 'null' by itself 199# define THREAD_ISNULL( _h) 0 // pthread_t may be a structure: never 'null' by itself
202 200
203 void THREAD_CREATE( THREAD_T* ref, THREAD_RETURN_T (*func)( void*), void* data, int prio /* -3..+3 */); 201 void THREAD_CREATE( THREAD_T* ref, THREAD_RETURN_T (*func)( void*), void* data, int prio /* -3..+3 */);