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.
This commit is contained in:
Sebastian Wilhelmi 2000-11-13 12:50:16 +00:00 committed by Sebastian Wilhelmi
parent 292152dae2
commit 82ab77c8f7
10 changed files with 76 additions and 2 deletions

View File

@ -1,3 +1,8 @@
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.
Sun Nov 12 18:34:32 2000 Owen Taylor <otaylor@redhat.com>
* gconvert.[ch]: Create wrapper functions for iconv()

View File

@ -1,3 +1,8 @@
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.
Sun Nov 12 18:34:32 2000 Owen Taylor <otaylor@redhat.com>
* gconvert.[ch]: Create wrapper functions for iconv()

View File

@ -1,3 +1,8 @@
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.
Sun Nov 12 18:34:32 2000 Owen Taylor <otaylor@redhat.com>
* gconvert.[ch]: Create wrapper functions for iconv()

View File

@ -1,3 +1,8 @@
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.
Sun Nov 12 18:34:32 2000 Owen Taylor <otaylor@redhat.com>
* gconvert.[ch]: Create wrapper functions for iconv()

View File

@ -1,3 +1,8 @@
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.
Sun Nov 12 18:34:32 2000 Owen Taylor <otaylor@redhat.com>
* gconvert.[ch]: Create wrapper functions for iconv()

View File

@ -1,3 +1,8 @@
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.
Sun Nov 12 18:34:32 2000 Owen Taylor <otaylor@redhat.com>
* gconvert.[ch]: Create wrapper functions for iconv()

View File

@ -1,3 +1,8 @@
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.
Sun Nov 12 18:34:32 2000 Owen Taylor <otaylor@redhat.com>
* gconvert.[ch]: Create wrapper functions for iconv()

View File

@ -1,3 +1,8 @@
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.
Sun Nov 12 18:34:32 2000 Owen Taylor <otaylor@redhat.com>
* gconvert.[ch]: Create wrapper functions for iconv()

View File

@ -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);

View File

@ -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);