mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-26 22:16:16 +01:00
Made the debugging G_TRYLOCK call also work for compilers with funnt
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de> * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work for compilers with funnt G_STMT_(START|END) macros. * tests/thread-test.c: Implemented a check for that.
This commit is contained in:
parent
e366512775
commit
1383e5b642
@ -1,5 +1,10 @@
|
||||
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
|
||||
for compilers with funnt G_STMT_(START|END) macros.
|
||||
|
||||
* tests/thread-test.c: Implemented a check for that.
|
||||
|
||||
* gutils.c (g_getenv): Changed the win32 part of this function to
|
||||
be thread safe and to make the returned environment string
|
||||
persistent to match the UN*X behavior. This is again a response to
|
||||
|
@ -1,5 +1,10 @@
|
||||
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
|
||||
for compilers with funnt G_STMT_(START|END) macros.
|
||||
|
||||
* tests/thread-test.c: Implemented a check for that.
|
||||
|
||||
* gutils.c (g_getenv): Changed the win32 part of this function to
|
||||
be thread safe and to make the returned environment string
|
||||
persistent to match the UN*X behavior. This is again a response to
|
||||
|
@ -1,5 +1,10 @@
|
||||
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
|
||||
for compilers with funnt G_STMT_(START|END) macros.
|
||||
|
||||
* tests/thread-test.c: Implemented a check for that.
|
||||
|
||||
* gutils.c (g_getenv): Changed the win32 part of this function to
|
||||
be thread safe and to make the returned environment string
|
||||
persistent to match the UN*X behavior. This is again a response to
|
||||
|
@ -1,5 +1,10 @@
|
||||
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
|
||||
for compilers with funnt G_STMT_(START|END) macros.
|
||||
|
||||
* tests/thread-test.c: Implemented a check for that.
|
||||
|
||||
* gutils.c (g_getenv): Changed the win32 part of this function to
|
||||
be thread safe and to make the returned environment string
|
||||
persistent to match the UN*X behavior. This is again a response to
|
||||
|
@ -1,5 +1,10 @@
|
||||
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
|
||||
for compilers with funnt G_STMT_(START|END) macros.
|
||||
|
||||
* tests/thread-test.c: Implemented a check for that.
|
||||
|
||||
* gutils.c (g_getenv): Changed the win32 part of this function to
|
||||
be thread safe and to make the returned environment string
|
||||
persistent to match the UN*X behavior. This is again a response to
|
||||
|
@ -1,5 +1,10 @@
|
||||
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
|
||||
for compilers with funnt G_STMT_(START|END) macros.
|
||||
|
||||
* tests/thread-test.c: Implemented a check for that.
|
||||
|
||||
* gutils.c (g_getenv): Changed the win32 part of this function to
|
||||
be thread safe and to make the returned environment string
|
||||
persistent to match the UN*X behavior. This is again a response to
|
||||
|
@ -1,5 +1,10 @@
|
||||
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
|
||||
for compilers with funnt G_STMT_(START|END) macros.
|
||||
|
||||
* tests/thread-test.c: Implemented a check for that.
|
||||
|
||||
* gutils.c (g_getenv): Changed the win32 part of this function to
|
||||
be thread safe and to make the returned environment string
|
||||
persistent to match the UN*X behavior. This is again a response to
|
||||
|
@ -1,5 +1,10 @@
|
||||
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
|
||||
for compilers with funnt G_STMT_(START|END) macros.
|
||||
|
||||
* tests/thread-test.c: Implemented a check for that.
|
||||
|
||||
* gutils.c (g_getenv): Changed the win32 part of this function to
|
||||
be thread safe and to make the returned environment string
|
||||
persistent to match the UN*X behavior. This is again a response to
|
||||
|
7
glib.h
7
glib.h
@ -3152,12 +3152,11 @@ extern void glib_dummy_decl (void);
|
||||
#name); \
|
||||
g_static_mutex_unlock (&G_LOCK_NAME (name)); \
|
||||
}G_STMT_END
|
||||
# define G_TRYLOCK(name) G_STMT_START{ \
|
||||
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
|
||||
# define G_TRYLOCK(name) \
|
||||
(g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
|
||||
"file %s: line %d (%s): try locking: %s ", \
|
||||
__FILE__, __LINE__, G_GNUC_PRETTY_FUNCTION, \
|
||||
#name); \
|
||||
}G_STMT_END, g_static_mutex_trylock (&G_LOCK_NAME (name))
|
||||
#name), g_static_mutex_trylock (&G_LOCK_NAME (name)))
|
||||
# else /* !G_DEBUG_LOCKS */
|
||||
# define G_LOCK(name) g_static_mutex_lock (&G_LOCK_NAME (name))
|
||||
# define G_UNLOCK(name) g_static_mutex_unlock (&G_LOCK_NAME (name))
|
||||
|
@ -3152,12 +3152,11 @@ extern void glib_dummy_decl (void);
|
||||
#name); \
|
||||
g_static_mutex_unlock (&G_LOCK_NAME (name)); \
|
||||
}G_STMT_END
|
||||
# define G_TRYLOCK(name) G_STMT_START{ \
|
||||
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
|
||||
# define G_TRYLOCK(name) \
|
||||
(g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
|
||||
"file %s: line %d (%s): try locking: %s ", \
|
||||
__FILE__, __LINE__, G_GNUC_PRETTY_FUNCTION, \
|
||||
#name); \
|
||||
}G_STMT_END, g_static_mutex_trylock (&G_LOCK_NAME (name))
|
||||
#name), g_static_mutex_trylock (&G_LOCK_NAME (name)))
|
||||
# else /* !G_DEBUG_LOCKS */
|
||||
# define G_LOCK(name) g_static_mutex_lock (&G_LOCK_NAME (name))
|
||||
# define G_UNLOCK(name) g_static_mutex_unlock (&G_LOCK_NAME (name))
|
||||
|
@ -4,12 +4,14 @@
|
||||
|
||||
static GMutex* test_g_mutex_mutex = NULL;
|
||||
static guint test_g_mutex_int = 0;
|
||||
G_LOCK_DEFINE_STATIC (test_g_mutex);
|
||||
|
||||
static void
|
||||
test_g_mutex_thread (gpointer data)
|
||||
{
|
||||
g_assert (GPOINTER_TO_INT (data) == 42);
|
||||
g_assert (g_mutex_trylock (test_g_mutex_mutex) == FALSE);
|
||||
g_assert (G_TRYLOCK (test_g_mutex) == FALSE);
|
||||
g_mutex_lock (test_g_mutex_mutex);
|
||||
g_assert (test_g_mutex_int == 42);
|
||||
g_mutex_unlock (test_g_mutex_mutex);
|
||||
@ -22,11 +24,13 @@ test_g_mutex (void)
|
||||
test_g_mutex_mutex = g_mutex_new ();
|
||||
|
||||
g_assert (g_mutex_trylock (test_g_mutex_mutex));
|
||||
g_assert (G_TRYLOCK (test_g_mutex));
|
||||
thread = g_thread_create (test_g_mutex_thread,
|
||||
GINT_TO_POINTER (42),
|
||||
0, TRUE, TRUE, G_THREAD_PRIORITY_NORMAL);
|
||||
g_usleep (G_MICROSEC);
|
||||
test_g_mutex_int = 42;
|
||||
G_UNLOCK (test_g_mutex);
|
||||
g_mutex_unlock (test_g_mutex_mutex);
|
||||
g_thread_join (thread);
|
||||
g_mutex_free (test_g_mutex_mutex);
|
||||
|
Loading…
Reference in New Issue
Block a user