struct Scheduler : property<Scheduler> {
enum class SynchronizeMode : unsigned { None, CPU, All } sync;
enum class ExitReason : unsigned { UnknownEvent, FrameEvent, SynchronizeEvent, DebuggerEvent };
readonly<ExitReason> exit_reason;
void clearExitReason() { exit_reason = ExitReason::UnknownEvent; }
cothread_t host_thread;
cothread_t thread;
void enter();
void exit(ExitReason);
void debug();
void init();
Scheduler();
};
extern Scheduler scheduler;