From 5f08fbcd6341ee0f8f3c7dfe721098c3bfae1c67 Mon Sep 17 00:00:00 2001 From: Gurusamy Sarathy Date: Thu, 24 Sep 1998 03:36:30 +0000 Subject: provide locked access to string table for USE_THREADS p4raw-id: //depot/perl@1863 --- thread.h | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'thread.h') diff --git a/thread.h b/thread.h index 3eb061a22a..035c5caec9 100644 --- a/thread.h +++ b/thread.h @@ -161,16 +161,29 @@ struct perl_thread *getTHR _((void)); * Systems with very fast mutexes (and/or slow conditionals) may wish to * remove the "if (threadnum) ..." test. */ -#define LOCK_SV_MUTEX \ - STMT_START { \ +#define LOCK_SV_MUTEX \ + STMT_START { \ + if (PL_threadnum) \ + MUTEX_LOCK(&PL_sv_mutex); \ + } STMT_END + +#define UNLOCK_SV_MUTEX \ + STMT_START { \ if (PL_threadnum) \ - MUTEX_LOCK(&PL_sv_mutex); \ + MUTEX_UNLOCK(&PL_sv_mutex); \ } STMT_END -#define UNLOCK_SV_MUTEX \ - STMT_START { \ +/* Likewise for strtab_mutex */ +#define LOCK_STRTAB_MUTEX \ + STMT_START { \ + if (PL_threadnum) \ + MUTEX_LOCK(&PL_strtab_mutex); \ + } STMT_END + +#define UNLOCK_STRTAB_MUTEX \ + STMT_START { \ if (PL_threadnum) \ - MUTEX_UNLOCK(&PL_sv_mutex); \ + MUTEX_UNLOCK(&PL_strtab_mutex); \ } STMT_END #ifndef THREAD_RET_TYPE @@ -223,6 +236,8 @@ typedef struct condpair { #define COND_DESTROY(c) #define LOCK_SV_MUTEX #define UNLOCK_SV_MUTEX +#define LOCK_STRTAB_MUTEX +#define UNLOCK_STRTAB_MUTEX #define THR /* Rats: if dTHR is just blank then the subsequent ";" throws an error */ -- cgit v1.2.1