diff options
author | Sebastian Wilhelmi <wilhelmi@ira.uka.de> | 2000-11-13 12:50:16 +0000 |
---|---|---|
committer | Sebastian Wilhelmi <wilhelmi@src.gnome.org> | 2000-11-13 12:50:16 +0000 |
commit | 82ab77c8f7b3f7969826ffc88c6349a5f7be9daf (patch) | |
tree | 544e5e9c5bf768bca64d23e26ea8e93d56a0412a /gthread.c | |
parent | 292152dae21f8a5e710036e0922905835897c567 (diff) | |
download | glib-82ab77c8f7b3f7969826ffc88c6349a5f7be9daf.tar.gz |
Made recursive mutexes also work when the thread system is not (yet)
2000-11-13 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gthread.c (g_static_rec_mutex_*): Made recursive mutexes also
work when the thread system is not (yet) initialized.
Diffstat (limited to 'gthread.c')
-rw-r--r-- | gthread.c | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -166,6 +166,9 @@ g_static_rec_mutex_lock (GStaticRecMutex* mutex) g_return_if_fail (mutex); + if (!g_thread_supported ()) + return; + G_THREAD_UF (thread_self, (&self)); if (g_system_thread_equal (self, mutex->owner)) @@ -185,6 +188,9 @@ g_static_rec_mutex_trylock (GStaticRecMutex* mutex) g_return_val_if_fail (mutex, FALSE); + if (!g_thread_supported ()) + return TRUE; + G_THREAD_UF (thread_self, (&self)); if (g_system_thread_equal (self, mutex->owner)) @@ -206,6 +212,9 @@ g_static_rec_mutex_unlock (GStaticRecMutex* mutex) { g_return_if_fail (mutex); + if (!g_thread_supported ()) + return; + if (mutex->depth > 1) { mutex->depth--; @@ -221,6 +230,9 @@ g_static_rec_mutex_lock_full (GStaticRecMutex *mutex, { g_return_if_fail (mutex); + if (!g_thread_supported ()) + return; + g_static_mutex_lock (&mutex->mutex); G_THREAD_UF (thread_self, (&mutex->owner)); mutex->depth = depth; @@ -229,10 +241,15 @@ g_static_rec_mutex_lock_full (GStaticRecMutex *mutex, guint g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex) { - gint depth = mutex->depth; + gint depth; g_return_val_if_fail (mutex, 0); + if (!g_thread_supported ()) + return 1; + + depth = mutex->depth; + g_system_thread_assign (mutex->owner, zero_thread); mutex->depth = 0; g_static_mutex_unlock (&mutex->mutex); |