No locking (which provides mutable `Sync` in rust terms) is generally required, but things must be Send (i.e., allowed to move between threads, but not shared). In my experience is mostly an issue when dealing with references, because `&T` is only Send if `T` is sync.
However, `&mut T` is Send if `T` is Send. So if you can avoid aliasing your references, you're also ok.
Thanks! So does that mean that if I write my code with default tokio and ARC where required and then when I add flavor = "current_thread" I can replace my ARC with Rc?
Re:Thread-per-core
by the_white_oak on Saturday October 07, 2023 @05:22PM
(#37805691)
Rc is not Send.
But you can use tokio's LocalSet to run non-Send futures.
https://docs.rs/tokio/latest/tokio/task/struct.LocalSet.html
Does that mean that I have to unnecessarily use locking (e.g. ARC and Mutex) even with flavor = "current_thread" or am I misunderstanding this?