Skip to content
败犬日报 2024-10-10

败犬日报 2024-10-10

1. 内存序 acq-rel 和 seq-cst 的区别

seq-cst 是最强的内存模型,所有线程里标记为 seq-cst 的原子操作对所有线程都是同一个顺序。

而 acq-rel 只保证了一个线程内的重排关系。

不理解的话可以只用 seq-cst。

cppref: memory order

2. 显式删除移动构造函数

如果不显式删除移动构造函数,调用时会尝试拷贝构造函数。

cpp
class Foo {
   public:
    Foo() = default;
    Foo(const Foo& other) {}
};

int main() {
    Foo f1;
    Foo f2 = std::move(f1);  // call Foo(const Foo& other)
    return 0;
}

如果调用显式删除移动构造函数(Foo(Foo&&) = delete;)就会编译报错。