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.
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;
g_autoptr(GError) error = NULL;
g_autoptr(GBytes) bytes = NULL;
if (!(bytes = dex_await_boxed (dex_input_stream_read_bytes (stream, 4096, 0), &error)))
return dex_future_new_for_error (g_steal_pointer (&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.