Active objects in qBeta are similar to Beta with respect to coroutines that may be scheduled cooperatively or pre-emptily. The basic primitive for synchronization in Beta is the Semaphore. In qBeta Semaphores are replaced by Compare-and-swap - in addition primitives for attaching coroutines to cores or native threads are included.
In qBeta - as in Beta, it is possible to define higher-order concurrency abstractions in the style of Monitors, Ada-like rendezvous, Message-passing systems, Actors, etc. This includes scheduling of active objects (concurrent processes). Details of active objects in qBeta may be found in:
Ole Lehrmann Madsen: Building Safe Concurrency Abstractions. Published in
Concurrent Objects and Beyond - Papers dedicated to Akinori Yonezawa on the Occasion of His 65th Birthday
Editors: Gul Agha, Atsushi Igarashi, Naoki Kobayashi, Hidehiko Masuhara, Satoshi Matsuoka,Etsuya Shibayama, Kenjiro Taura
Lecture Notes in Computer Science, Volume 8665 2014, ISBN: 978-3-662-44470-2 (Print) 978-3-662-44471-9 (Online)
The following pages contain a brief description of cooperative and pre-emptive coroutines and the handling of non-blocking IO for keyboard as well as blocking and non-blocking Sockets.