![]() |
![]() |
![]() |
GIO Reference Manual | ![]() |
---|---|---|---|---|
#include <gio/gio.h> GIOSchedulerJob; gboolean (*GIOSchedulerJobFunc) (GIOSchedulerJob *job, GCancellable *cancellable, gpointer user_data); void g_io_scheduler_push_job (GIOSchedulerJobFunc job_func, gpointer user_data, GDestroyNotify notify, gint io_priority, GCancellable *cancellable); void g_io_scheduler_cancel_all_jobs (void); gboolean g_io_scheduler_job_send_to_mainloop (GIOSchedulerJob *job, GSourceFunc func, gpointer user_data, GDestroyNotify notify); void g_io_scheduler_job_send_to_mainloop_async (GIOSchedulerJob *job, GSourceFunc func, gpointer user_data, GDestroyNotify notify);
Schedules asynchronous I/O operations. GIOScheduler integrates into the main event loop (GMainLoop) and may use threads if they are available.
Each I/O operation has a priority, and the scheduler uses the priorities to determine the order in which operations are executed. They are not used to determine system-wide I/O scheduling. Priorities are integers, with lower numbers indicating higher priority. It is recommended to choose priorities between G_PRIORITY_LOW and G_PRIORITY_HIGH, with G_PRIORITY_DEFAULT as a default.
typedef struct _GIOSchedulerJob GIOSchedulerJob;
Opaque class for definining and scheduling IO jobs.
gboolean (*GIOSchedulerJobFunc) (GIOSchedulerJob *job, GCancellable *cancellable, gpointer user_data);
I/O Job function.
Note that depending on whether threads are available, the GIOScheduler may run jobs in separate threads or in an idle in the mainloop.
Long-running jobs should periodically check the cancellable to see if they have been cancelled.
job : | a GIOSchedulerJob. |
cancellable : | optional GCancellable object, NULL to ignore. |
user_data : | the data to pass to callback function |
Returns : | TRUE if this function should be called again to complete the job, FALSE if the job is complete (or cancelled) |
void g_io_scheduler_push_job (GIOSchedulerJobFunc job_func, gpointer user_data, GDestroyNotify notify, gint io_priority, GCancellable *cancellable);
Schedules the I/O job to run.
notify will be called on user_data after job_func has returned, regardless whether the job was cancelled or has run to completion.
If cancellable is not NULL, it can be used to cancel the I/O job by calling g_cancellable_cancel() or by calling g_io_scheduler_cancel_all_jobs().
job_func : | a GIOSchedulerJobFunc. |
user_data : | data to pass to job_func |
notify : | a GDestroyNotify for user_data, or NULL |
io_priority : | the I/O priority of the request. |
cancellable : | optional GCancellable object, NULL to ignore. |
void g_io_scheduler_cancel_all_jobs (void);
Cancels all cancellable I/O jobs.
A job is cancellable if a GCancellable was passed into g_io_scheduler_push_job().
gboolean g_io_scheduler_job_send_to_mainloop (GIOSchedulerJob *job, GSourceFunc func, gpointer user_data, GDestroyNotify notify);
Used from an I/O job to send a callback to be run in the main loop (main thread), waiting for the result (and thus blocking the I/O job).
job : | a GIOSchedulerJob |
func : | a GSourceFunc callback that will be called in the main thread |
user_data : | data to pass to func |
notify : | a GDestroyNotify for user_data, or NULL |
Returns : | The return value of func |
void g_io_scheduler_job_send_to_mainloop_async (GIOSchedulerJob *job, GSourceFunc func, gpointer user_data, GDestroyNotify notify);
Used from an I/O job to send a callback to be run asynchronously in the main loop (main thread). The callback will be run when the main loop is available, but at that time the I/O job might have finished. The return value from the callback is ignored.
Note that if you are passing the user_data from g_io_scheduler_push_job() on to this function you have to ensure that it is not freed before func is called, either by passing NULL as notify to g_io_scheduler_push_job() or by using refcounting for user_data.
job : | a GIOSchedulerJob |
func : | a GSourceFunc callback that will be called in the main thread |
user_data : | data to pass to func |
notify : | a GDestroyNotify for user_data, or NULL |