The current soss::SystemHandle API assumes that the underlying middleware does not run async, but many middlewares do run async, and that feature should be leveraged appropriately.
The current API which uses SystemHandle::spin_once() should be changed to:
/// Tell the middleware to begin spinning
void spin();
/// Tell the middleware to interrupt its spinning
void interrupt();
This way every middleware can use its internal faculties to prevent busy waiting.
The current
soss::SystemHandleAPI assumes that the underlying middleware does not run async, but many middlewares do run async, and that feature should be leveraged appropriately.The current API which uses
SystemHandle::spin_once()should be changed to:This way every middleware can use its internal faculties to prevent busy waiting.