29 #if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
33 #define TDS_MUTEX_DEFINE(name) pthread_mutex_t name = PTHREAD_MUTEX_INITIALIZER
34 #define TDS_MUTEX_LOCK(mtx) pthread_mutex_lock(mtx)
35 #define TDS_MUTEX_UNLOCK(mtx) pthread_mutex_unlock(mtx)
36 #define TDS_MUTEX_DECLARE(name) pthread_mutex_t name
37 #define TDS_MUTEX_INIT(mtx) pthread_mutex_init(mtx, NULL)
38 #define TDS_MUTEX_FREE(mtx) pthread_mutex_destroy(mtx)
40 #define TDS_HAVE_MUTEX 1
46 typedef struct tds_win_mutex_t_ {
49 CRITICAL_SECTION crit;
52 void tds_win_mutex_lock(tds_win_mutex_t *mutex);
53 static inline int tds_win_mutex_init(tds_win_mutex_t *mtx)
61 #define TDS_MUTEX_DEFINE(name) tds_win_mutex_t name = { NULL, 0 }
62 #define TDS_MUTEX_LOCK(mtx) \
63 do { if ((mtx)->done) EnterCriticalSection(&(mtx)->crit); else tds_win_mutex_lock(mtx); } while(0)
64 #define TDS_MUTEX_UNLOCK(mtx) LeaveCriticalSection(&(mtx)->crit)
65 #define TDS_MUTEX_DECLARE(name) tds_win_mutex_t name
66 #define TDS_MUTEX_INIT(mtx) tds_win_mutex_init(mtx)
67 #define TDS_MUTEX_FREE(mtx) do { if ((mtx)->done) { DeleteCriticalSection(&(mtx)->crit); (mtx)->done = 0; } } while(0)
69 #define TDS_HAVE_MUTEX 1
73 #define TDS_MUTEX_DEFINE(name) int name
74 #define TDS_MUTEX_LOCK(mtx)
75 #define TDS_MUTEX_UNLOCK(mtx)
76 #define TDS_MUTEX_DECLARE(name) int name
77 #define TDS_MUTEX_INIT(mtx)
78 #define TDS_MUTEX_FREE(mtx)
Definition: ptw32_MCS_lock.c:97