Method
DexSchedulerspawn
Declaration [src]
DexFuture*
dex_scheduler_spawn (
DexScheduler* scheduler,
gsize stack_size,
DexFiberFunc func,
gpointer func_data,
GDestroyNotify func_data_destroy
)
Description [src]
Request scheduler to spawn a DexFiber.
The fiber will have its own stack and cooperatively schedules among other fibers sharing the scheduler.
This can be called from any thread. The resulting fiber runs on the thread
associated with the scheduler.
If stack_size is 0, it will set to a sensible default. Otherwise, it is
rounded up to the nearest page size.
static DexFuture *
fiber_func (gpointer data)
{
GInputStream *stream = data;
GError *error = NULL;
GBytes *bytes = NULL;
if (!(bytes = dex_await_boxed (dex_input_stream_read_bytes (stream, 4096, 0), &error)))
return dex_future_new_for_error (error);
...
return dex_future_new_true ();
}
DexFuture *
spawn_fiber (GInputStream *stream)
{
return dex_scheduler_spawn (NULL, 0, fiber_func,
g_object_ref (stream),
g_object_unref);
}
Parameters
scheduler-
Type:
DexSchedulerA
DexScheduler.The argument can be NULL. stack_size-
Type:
gsizeStack size in bytes or 0.
func-
Type:
DexFiberFuncA
DexFiberFunc. func_data-
Type:
gpointerClosure data for
func.The argument can be NULL.The data is owned by the caller of the method. func_data_destroy-
Type:
GDestroyNotifyClosure notify for
func_data.