3 ms·
Isn’t anything with Arc thread safe?
by metaltyphoon 2y ago
Isn’t anything with Arc thread safe?
- ab5tract 2y agoTelling when a thing is thread safe is hardly the same as telling when something isn’t.
- ninkendo 2y agoNo. Just because something’s behind an Arc<T> doesn’t mean two threads can hold it at once. Arc just ensures that it is freed (dropped) when no threads are using it any more. T itself has to be Send+Sync for Arc to be. To a first approximation, Arc<Mutex<T>> is what you want when you want a blob of mutable stuff to just work between threads, but you still have to worry about terrible performance if you hold the mutexes too long, etc. (Not to mention mutexes are just slower in general than having types which are natively Send+Sync.)
- jpc0 2y ago> Not to mention mutexes are just slower in general than having types which are natively Send+Sync Without knowing the implementation, how would you know this statement is true? I could just stick the Arc<Mutex<T>> within my abstraction and say it is send+sync and it would have the exact same performance, and that might be the most efficient solution possible on the given hardware.
- deleted 2y ago[deleted]