Request this to spawn a [class@Dex.
Fiber].
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 this.
If stack_size is 0, it will set to a sensible default. Otherwise, it is rounded up to the nearest page size.
```c 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); } ```
| this |
a [class@Dex.Scheduler] |
| stack_size |
stack size in bytes or 0 |
| func |
a [callback@Dex.FiberFunc] |
| func_data |
closure data for |
| func_data_destroy |
closure notify for |
|
a [class@Dex.Future] that will resolve or reject when |