Search code examples
asynchronousrustrust-tokio

Efficient synchronization primitives for a single-threaded async app in Rust


I have a tokio-based single-threaded async app where using Arcs or other Sync types seems to be an overhead. Because there is no need for synchronization between threads, I am looking for something like tokio::sync::oneshot::channel, Sender and Receiver of which should be !Sync and could be wrapped into Rc instead of Arc.

Are there any specially crafted synchronization primitives for usage in single-threaded async apps in Rust?


Solution

  • You can take a look at the various Local types in futures-intrusive. E.g. the LocalOneshotChannel requires no mutex.