IIRC everything in tokio::sync
is runtime agnostic.
Edit: While not stated explicitly in the docs, I found a reference:
That said, some utilities do not need external code: For example a channel can coordinate the two halves and make one half wake the other half up, meaning that no external code is needed to handle that situation. In fact the entire
tokio::sync
module is executor agnostic for this reason. Additionally the entire futures crate provides exclusively executor agnostic utilities.