#include GStaticRecMutex mutex = G_STATIC_REC_MUTEX_INIT; static void * thread1 (void *t) { gint i = 0; while (TRUE) { g_static_rec_mutex_lock (&mutex); if (i++ % 100000 == 0) g_print ("*"); g_static_rec_mutex_unlock (&mutex); if (i++ % 100000 == 0) g_print ("*"); } return NULL; } static void * thread2 (void *t) { gint i = 0; while (TRUE) { g_static_rec_mutex_lock (&mutex); if (i++ % 100000 == 0) g_print ("."); g_static_rec_mutex_unlock (&mutex); if (i++ % 100000 == 0) g_print ("."); } return NULL; } int main (gint argc, gchar * argv[]) { g_thread_init (NULL); g_thread_create_full (thread1, NULL, 0x200000, FALSE, TRUE, G_THREAD_PRIORITY_NORMAL, NULL); g_thread_create_full (thread2, NULL, 0x200000, FALSE, TRUE, G_THREAD_PRIORITY_NORMAL, NULL); g_usleep (G_MAXLONG); return 0; }