【发布时间】:2017-05-09 13:38:25
【问题描述】:
查看std::atomic,这是我阅读的默认专业:
这些特化具有标准布局、普通默认构造函数和普通析构函数。
我也为is_lock_free阅读:
除了
std::atomic_flag之外的所有原子类型都可以使用 互斥体 或其他锁定操作,而不是使用无锁 原子 CPU 指令。有时也允许原子类型 无锁,例如如果只有对齐的内存访问是自然原子的 在给定的架构上,相同类型的未对齐对象必须 使用锁。
现在这是我没有得到的问题:
标准规定琐碎的ctor/dtor的任何atomic类型怎么可能使用任何类型的互斥锁——我遇到的所有互斥锁都需要非-简单的初始化。
这会导致以下问题:
- 主要平台是否提供每个对象“无需初始化”的任何锁定操作(如互斥锁)。 (那将是“其他锁定操作”。)
- 目前是否有任何已知的默认
std::atomic特化实现不是无锁的(并且仍然满足琐碎的ctor/dtor要求)? - 我只是在这里混淆了什么吗? :-)
在我看来,即使是最简单的自旋锁(参见atomic_flag)也需要不平凡的初始化,所以我看不出如何实现。
免责声明:纯粹出于学术兴趣,因为我在阅读这些文档时有点跳出来。
【问题讨论】:
标签: c++ multithreading mutex atomic lock-free