diff --git a/src/sbbs3/sbbswrap.h b/src/sbbs3/sbbswrap.h
index f2e38468d930334b419840f900a53168c8791897..d84330e4aa902c171a4c2bf4f66796e721c28945 100644
--- a/src/sbbs3/sbbswrap.h
+++ b/src/sbbs3/sbbswrap.h
@@ -125,13 +125,21 @@ extern "C" {
 	ulong _beginthread(void( *start_address )( void * )
 		,unsigned stack_size, void *arglist);
 
-#elif defined(_WIN32)	/* semaphores */
+#elif defined(_WIN32)	
 
+	/* POIX semaphores */
 	typedef HANDLE sem_t;
-	#define sem_init(psem,ps,v) ResetEvent(*(psem))
-	#define sem_wait(psem)		WaitForSingleObject(*(psem),INFINITE)
-	#define sem_post(psem)		SetEvent(*(psem))
-	#define sem_destroy(psem)	CloseHandle(*(psem))
+	#define sem_init(psem,ps,v)			ResetEvent(*(psem))
+	#define sem_wait(psem)				WaitForSingleObject(*(psem),INFINITE)
+	#define sem_post(psem)				SetEvent(*(psem))
+	#define sem_destroy(psem)			CloseHandle(*(psem))
+
+	/* POIX mutexes */
+	typedef HANDLE pthread_mutex_t;
+	#define pthread_mutex_init(pmtx,v)	*(pmtx)=CreateMutex(NULL,FALSE,NULL)
+	#define pthread_mutex_lock(pmtx)	WaitForSingleObject(*(pmtx),INFINITE)
+	#define pthread_mutex_unlock(pmtx)	ReleaseMutex(*(pmtx))
+	#define	pthread_mutex_destroy(pmtx)	CloseHandle(*(pmtx))
 
 #else