EventLoopType

The internal types that will be exposed through other api things.

Values

ValueMeaning
AdHoc

The event loop is being run temporarily and the thread doesn't promise to keep running it.

Explicit

The event loop struct has been instantiated at top level. Its destructor will run when the function exits, which is only at the end of the entire block of work it is responsible for.

It must be in scope for the whole time the arsd event loop functions are expected to be used (meaning it should generally be top-level in main)

Ui

A specialization of Explicit, so all the same rules apply there, but this is specifically the event loop coming from simpledisplay or minigui. It will run for the duration of the UI's existence.

TaskRunner

A special event loop specifically for threads that listen to the task runner queue and handle I/O events from running tasks. Typically, a task runner runs cooperatively multitasked coroutines (so they prefer not to block the whole thread).

HelperWorker

A special event loop specifically for threads that listen to the helper function request queue. Helper functions are expected to run independently for a somewhat long time (them blocking the thread for some time is normal) and send a reply message back to the requester.

Meta