Rust原子序列

  • Rust 原子操作操作有 5 中内存顺序: Relaxed Release Acquire AcqRel SeqCst
  • Relaxed 没有内存顺序约束,仅仅是原子类型的 store/load 操作是原子操作,即针对该原子类型的在不同线程之间的操作顺序是任意的;
  • ReleaseAcquire 是在不同的线程间针对同一原子类型对象的进行 storeload 操作时配合使用。当一个线程 storewithRelease 写原子类型对象,而有另一个线程 loadwithAcquire 度原子类型对象时,那么在写及写之前的所有写原子操作都是发生在另一个线程中读该原子类型之后的所有读原子操作之前。简而言之就是,Release 之前的原子操作先于 Acquire 之后的原子操作;
  • AcqRelRelease Acquire 的效果一样,只不过是读的时候使用 Acquire 顺序,写的时候使用 Release 顺序;
  • SeqCst 若某一原子类型对象在不同线程中使用 SeqCst 读写,那么该原子操作之前的所有读写原子操作都先于该原子操作之后的读写操作
本作品采用《CC 协议》,转载必须注明作者和本文链接
謎麟