zoukankan      html  css  js  c++  java
  • rust异步知识点汇总

    异步知识点汇总

    对于任意类型 T,若是 &T是 Send ,T 就是 Sync 的

    unsafe impl<T: ?Sized + Sync + Send> Send for Arc<T> {}
    unsafe impl<T: ?Sized + Sync + Send> Sync for Arc<T> {}
    
    unsafe impl<T: ?Sized> Send for RefCell<T> where T: Send {}
    impl<T: ?Sized> !Sync for RefCell<T> {}
    
    unsafe impl<T: ?Sized + Send> Send for Mutex<T> {}
    unsafe impl<T: ?Sized + Send> Sync for Mutex<T> {}

     &mut self 并不要求 T: Sync

    mod impls {
        #[stable(feature = "rust1", since = "1.0.0")]
        unsafe impl<T: Sync + ?Sized> Send for &T {}
        #[stable(feature = "rust1", since = "1.0.0")]
        unsafe impl<T: Send + ?Sized> Send for &mut T {}
    }

    &T: Send 要求 T: Sync,而 &mut T 则 T: Send 便可

    要共享数据时使用 Arc<T>要求 T: Send + Sync。而共享可写数据,使用 Arc<Mutex<T>>,要求 T: Send 便可,不要求Sync。

    对于原子类的操作,如果是写,那么内存顺序提供 Release,如果是读,那么内存顺序提供 Acquire

  • 相关阅读:
    日历(Calendar)模块
    关于Python3中函数:
    正则表达式全集
    python同时遍历两个list
    Python 类
    vs_code 快捷键
    Linux常用命令大全
    Linux基础命令sort
    Linux基础命令练习题答案7.10
    Linux基础命令练习题7.10
  • 原文地址:https://www.cnblogs.com/samis/p/14865443.html
Copyright © 2011-2022 走看看