Rust tokio: Send与Sync

tokio中,返回的future无脑实现Send,因为tokio异步框架并不能保证单个异步任务绑定某个真实线程执行,实现Send表示这个future可以安全的跨线程执行。 Sync表示并发安全,需要跨异步任务调用的必须是Sync,可以套Mutex实现非Sync转Sync,再套Arc实现clone。 // Sync 类型: Arc // 当 T: Sync Mutex // 当 T: Send RwLock // 当 T: Send AtomicBool AtomicI32 Vec // 当 T: Sync String &T // 当 T: Sync // 非 Sync 类型: RefCell // 内部可变性不是线程安全的 Cell // 同上 Rc // 引用计数不是线程安全的 *mut T // 裸指针

October 27, 2024 · rikaaa0928