EXPERIMENTAL! UNSTABLE! A WORK IN PROGRESS!
GJ is a port of the KJ concurrency framework into Rust.
A GJ event loop allows you to register callbacks to be executed when nonblocking IO completes. You can have many threads, each with their own GJ event loop. A single event loop runs on a single thread, so you can share mutable data between callbacks without any need for mutexes or atomics.