Hi, GIOSchedulerJob uses GThreadPool to run it's jobs if thread system is
supported, otherwise it use g_idle_add*(), using GThreadPool maybe the best
choice for handling some blocking operations such as I/O related call. Here an
example for using GSchedulerJob. As you can see the main loop was not blocked
although job_func call a blocking g_usleep().
#include <glib.h>
#include <gio/gio.h>
static gboolean source_func(void *data)
{
g_print("im source\n");
return TRUE;
}
static gboolean job_func(GIOSchedulerJob *job, GCancellable *cancellable, void
*data)
{
g_print ("im running\n");
g_usleep(G_USEC_PER_SEC);
return TRUE;
}
int main(void)
{
GMainLoop *main_loop;
g_thread_init(NULL);
main_loop = g_main_loop_new(NULL, FALSE);
g_io_scheduler_push_job(job_func, NULL, NULL, G_PRIORITY_DEFAULT, NULL);
g_timeout_add(250, (GSourceFunc) source_func, NULL);
g_main_loop_run(main_loop);
return 0;
}
If GIOSchedulerJob documentation is not `clear', you can explore it's source at
http://git.gnome.org/browse/glib/tree/gio/gioscheduler.c
The best documentations for programming is the code it's self right? ;p
Ardhan
--- [email protected] wrote:
From: Alexander Kuleshov <[email protected]>
To: [email protected]
Subject: GIOScheduler example need
Date: Thu, 24 Jun 2010 14:55:54 +0600
Hello,
I need to use GIOScheduler in my C/gtk+ application. Where can find
example of using GIOScheduler?
Thank you.
_______________________________________________
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