image/svg+xml
UI Event Loop Thread
CrossThreadChannel
RT Thread
Freeze Thread
Step One:AbstractUI::get_request()AbstractUI::send_request()
Generic non-RT-safe request queue
RT-safe per-thread request queues
while (1) if (channel.data_available()) { channel.drain(); handle_ui_requests(); }
J. Random Thread
Step Two:CrossThreadChannel::wakeup()
AbstractUI IS-A BaseUI IS-A Event Loop