static void thread_link_unlink (gpointer data) { THREAD_START (); while (THREAD_TEST_RUNNING ()) { gst_pad_link (src, sink); gst_pad_unlink (src, sink); THREAD_SWITCH (); } }
static void thread_unref (GstMiniObject * mobj) { int j; THREAD_START (); for (j = 0; j < refs_per_thread; ++j) { gst_mini_object_unref (mobj); if (j % num_threads == 0) THREAD_SWITCH (); } }
/* test thread-safe refcounting of GstMiniObject */ static void thread_ref (GstMiniObject * mobj) { int j; THREAD_START (); for (j = 0; j < refs_per_thread; ++j) { gst_mini_object_ref (mobj); if (j % num_threads == 0) THREAD_SWITCH (); } GST_DEBUG ("thread stopped"); }
static void thread_buffer_consumer (MyBufferPool * pool) { THREAD_START (); do { GstBuffer *buf; buf = my_buffer_pool_drain_one (pool); if (buf != NULL) my_recycle_buffer_destroy (MY_RECYCLE_BUFFER_CAST (buf)); THREAD_SWITCH (); } while (!pool->is_closed); }
/* thread function for threaded default name change test */ static gpointer thread_name_object_default (int *i) { int j; THREAD_START (); for (j = *i; j < num_objects; j += num_threads) { GstObject *o = GST_OBJECT (g_list_nth_data (object_list, j)); /* g_message ("THREAD %p: setting default name on object %d\n", g_thread_self (), j); */ gst_object_set_name (o, NULL); THREAD_SWITCH (); } /* thread is done, so let's return */ g_message ("THREAD %p: set name\n", g_thread_self ()); g_free (i); return NULL; }
/* thread function for threaded name change test */ static gpointer thread_name_object (GstObject * object) { gchar *thread_id = g_strdup_printf ("%p", g_thread_self ()); THREAD_START (); /* give main thread a head start */ g_usleep (100000); /* write our name repeatedly */ g_message ("THREAD %s: starting loop\n", thread_id); while (THREAD_TEST_RUNNING ()) { gst_object_set_name (object, thread_id); /* a minimal sleep invokes a thread switch */ THREAD_SWITCH (); } /* thread is done, so let's return */ g_message ("THREAD %s: set name\n", thread_id); g_free (thread_id); return NULL; }