Hi Andrew,
I wrote some Glib programming example in the past, this code is about
creating GMainContext, GMainLoop and GSources (that g_timeout_add() function
and friends did) into separate thread, hope this will be usefull for you.
#include <glib.h>
typedef struct
{
GMainLoop *loop;
guint n_run;
} LoopInfo;
gboolean callback (LoopInfo *info)
{
info->n_run -= 1;
g_print ("loop %p n_run: %u\n", info->loop, info->n_run);
if (info->n_run <= 0)
{
g_main_loop_quit (info->loop);
g_print ("loop %p quit\n", info->loop);
return FALSE;
}
return TRUE;
}
gpointer *thread1 (gpointer *data)
{
GMainLoop *loop = g_main_loop_new (NULL, FALSE);
GSource *source = g_timeout_source_new (2250);
LoopInfo info = { .loop = loop, .n_run = 3 };
g_source_set_callback (source, (GSourceFunc) callback, &info, NULL);
g_source_attach (source, NULL);
g_print ("loop %p run\n", loop);
g_main_loop_run (loop);
return NULL;
}
gint main(void)
{
g_thread_init (NULL);
GThread *thread = g_thread_create ((GThreadFunc) thread1, NULL, TRUE, NULL);
GMainContext *ctx = g_main_context_new ();
GMainLoop *loop = g_main_loop_new (ctx, FALSE);
GSource *source = g_timeout_source_new_seconds (1);
LoopInfo info = { .loop = loop, .n_run = 5 };
g_source_set_callback (source, (GSourceFunc) callback, &info, NULL);
g_source_attach (source, ctx);
g_print ("loop %p run\n", loop);
g_main_loop_run (loop);
g_thread_join (thread);
return 0;
}
--- [email protected] wrote:
From: Andrew Wood <[email protected]>
To: gtk-app-devel-list <[email protected]>
Subject: Forcing a G Timeout to be handled by a specific thread
Date: Wed, 05 Oct 2011 14:00:40 +0100
Is there a way to ensure a timeout callback set with g_timeout_add is
always executed by a specific pthread?
Thanks
Andrew
_______________________________________________
gtk-app-devel-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
_____________________________________________________________
Listen to KNAC, Hit the Home page and Tune In Live! ---> http://www.knac.com
_______________________________________________
gtk-app-devel-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list