From c113872b1b5d8c3a7e5c47fd4321e00d090f96e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Mon, 15 Sep 1997 14:43:23 +0200 Subject: [PATCH] Now releases the interpreter lock before signaling the mutex condition. Rev: src/threads.c:1.39 --- src/threads.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/threads.c b/src/threads.c index e365a5d294..3f28b74269 100644 --- a/src/threads.c +++ b/src/threads.c @@ -1,5 +1,5 @@ #include "global.h" -RCSID("$Id: threads.c,v 1.38 1997/09/08 21:32:37 hubbe Exp $"); +RCSID("$Id: threads.c,v 1.39 1997/09/15 12:43:23 grubba Exp $"); int num_threads = 1; int threads_disabled = 0; @@ -293,6 +293,7 @@ void exit_mutex_key_obj(struct object *o) if(THIS_KEY->mut) { struct mutex_storage *mut = THIS_KEY->mut; + #ifdef DEBUG if(mut->key != o) fatal("Mutex unlock from wrong key %p != %p!\n",THIS_KEY->mut->key,o); @@ -302,9 +303,11 @@ void exit_mutex_key_obj(struct object *o) free_object(THIS_KEY->owner); THIS_KEY->owner=0; } - co_signal(& mut->condition); THIS_KEY->mut=0; THIS_KEY->initialized=0; + THREADS_ALLOW(); + co_signal(& mut->condition); + THREADS_DISALLOW(); } } -- GitLab