Skip to content

Commit 0550c0d

Browse files
author
Volodymyr Samokhatko
committed
threading: rwlock
1 parent 0ff438b commit 0550c0d

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

include/rfb/threading.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
#if 0 /* debugging */
3030
#define LOCK(mutex) (rfbLog("%s:%d LOCK(%s,0x%x)\n",__FILE__,__LINE__,#mutex,&(mutex)), pthread_mutex_lock(&(mutex)))
3131
#define UNLOCK(mutex) (rfbLog("%s:%d UNLOCK(%s,0x%x)\n",__FILE__,__LINE__,#mutex,&(mutex)), pthread_mutex_unlock(&(mutex)))
32+
#define RDLOCK(rwlock) (rfbLog("%s:%d RDLOCK(%s,0x%x)\n",__FILE__,__LINE__,#rwlock,&(rwlock)), pthread_rwlock_rdlock(&(rwlock)))
33+
#define WRLOCK(rwlock) (rfbLog("%s:%d WRLOCK(%s,0x%x)\n",__FILE__,__LINE__,#rwlock,&(rwlock)), pthread_rwlock_wrlock(&(rwlock)))
34+
#define RWUNLOCK(rwlock) (rfbLog("%s:%d RWUNLOCK(%s,0x%x)\n",__FILE__,__LINE__,#rwlock,&(rwlock)), pthread_rwlock_unlock(&(rwlock)))
3235
#define MUTEX(mutex) pthread_mutex_t (mutex)
3336
#define INIT_MUTEX(mutex) (rfbLog("%s:%d INIT_MUTEX(%s,0x%x)\n",__FILE__,__LINE__,#mutex,&(mutex)), pthread_mutex_init(&(mutex),NULL))
3437
#define TINI_MUTEX(mutex) (rfbLog("%s:%d TINI_MUTEX(%s)\n",__FILE__,__LINE__,#mutex), pthread_mutex_destroy(&(mutex)))
@@ -37,11 +40,22 @@
3740
#define COND(cond) pthread_cond_t (cond)
3841
#define INIT_COND(cond) (rfbLog("%s:%d INIT_COND(%s)\n",__FILE__,__LINE__,#cond), pthread_cond_init(&(cond),NULL))
3942
#define TINI_COND(cond) (rfbLog("%s:%d TINI_COND(%s)\n",__FILE__,__LINE__,#cond), pthread_cond_destroy(&(cond)))
43+
#define RWLOCK(rwlock) pthread_rwlock_t (rwlock)
44+
#define INIT_RWLOCK(rwlock) (rfbLog("%s:%d INIT_RWLOCK(%s)\n",__FILE__,__LINE__,#rwlock), pthread_rwlock_init(&(rwlock),NULL))
45+
#define TINI_RWLOCK(rwlock) (rfbLog("%s:%d TINI_RWLOCK(%s)\n",__FILE__,__LINE__,#rwlock), pthread_rwlock_destroy(&(rwlock)))
4046
#define IF_PTHREADS(x) x
47+
#define THREAD_ROUTINE_RETURN_TYPE void*
48+
#define THREAD_ROUTINE_RETURN_VALUE NULL
49+
#define THREAD_SLEEP_MS(ms) usleep(ms*1000)
50+
#define THREAD_JOIN(thread) pthread_join(thread, NULL)
51+
#define CURRENT_THREAD_ID pthread_self()
4152
#else
4253
#if !NONETWORK
4354
#define LOCK(mutex) pthread_mutex_lock(&(mutex))
4455
#define UNLOCK(mutex) pthread_mutex_unlock(&(mutex))
56+
#define RDLOCK(rwlock) pthread_rwlock_rdlock(&(rwlock))
57+
#define WRLOCK(rwlock) pthread_rwlock_wrlock(&(rwlock))
58+
#define RWUNLOCK(rwlock) pthread_rwlock_unlock(&(rwlock))
4559
#endif
4660
#define MUTEX(mutex) pthread_mutex_t (mutex)
4761
#define MUTEX_SIZE (sizeof(pthread_mutex_t))
@@ -52,6 +66,9 @@
5266
#define COND(cond) pthread_cond_t (cond)
5367
#define INIT_COND(cond) pthread_cond_init(&(cond),NULL)
5468
#define TINI_COND(cond) pthread_cond_destroy(&(cond))
69+
#define RWLOCK(rwlock) pthread_rwlock_t (rwlock)
70+
#define INIT_RWLOCK(rwlock) pthread_rwlock_init(&(rwlock),NULL)
71+
#define TINI_RWLOCK(rwlock) pthread_rwlock_destroy(&(rwlock))
5572
#define IF_PTHREADS(x) x
5673
#define THREAD_ROUTINE_RETURN_TYPE void*
5774
#define THREAD_ROUTINE_RETURN_VALUE NULL
@@ -63,6 +80,9 @@
6380
#include <process.h>
6481
#define LOCK(mutex) EnterCriticalSection(&(mutex))
6582
#define UNLOCK(mutex) LeaveCriticalSection(&(mutex))
83+
#define RDLOCK(rwlock) LOCK((rwlock))
84+
#define WRLOCK(rwlock) LOCK((rwlock))
85+
#define RWUNLOCK(rwlock) UNLOCK((rwlock))
6686
#define MUTEX(mutex) CRITICAL_SECTION (mutex)
6787
#define MUTEX_SIZE (sizeof(CRITICAL_SECTION))
6888
#define INIT_MUTEX(mutex) InitializeCriticalSection(&(mutex))
@@ -72,6 +92,9 @@
7292
#define COND(cond) CONDITION_VARIABLE (cond)
7393
#define INIT_COND(cond) InitializeConditionVariable(&(cond));
7494
#define TINI_COND(cond)
95+
#define RWLOCK(rwlock) MUTEX((rwlock))
96+
#define INIT_RWLOCK(rwlock) INIT_MUTEX((rwlock))
97+
#define TINI_RWLOCK(rwlock) TINI_MUTEX((rwlock))
7598
#define IF_PTHREADS(x)
7699
#define THREAD_ROUTINE_RETURN_TYPE void
77100
#define THREAD_ROUTINE_RETURN_VALUE

0 commit comments

Comments
 (0)