原子类型
c++11提供了原子操作类型, 模板类std::atomic。
头文件#include<atomic>
内存模型
在原子类型的操作中可以指定在实现的时候,对应的汇编指令的执行顺序。
我们如果加了锁,那么对于加锁部分的代码,其执行顺序是顺序的。
但是在c++11中我们可以指定内存模型。共有以下几种。
枚举值 | 定义规则 |
---|---|
memory_order_relaxed | 不对执行顺序做任何保证 |
memory_order_acquire | 本线程中,所有后续的读操作必须在本条原子操作完成后执行 |
memory_order_release | 本线程中,所有之前的写操作完成后,才能执行本条原子操作 |
memory_order_acq_rel | 同时包含memory_order_acquire和memory_order_release标记 |
memory_order_consume | 本线程中,所有后续的有关本原子类型的操作,必须在本条原子操作完成之后执行 |
memory_order_seq_cst | 全部存取都按顺序执行 |
显然应该举个例子的啊。。
网友评论