【发布时间】:2016-12-16 18:17:44
【问题描述】:
C11 和 C++11 根据执行线程定义原子。在托管环境中,线程是什么很清楚,但在独立语言实现中,它是一个相当模糊的术语。
- 如何在必须在程序内部实现所有线程的独立实现中正式理解 C11 和 C++11 中指定的原子?例如:ISR 是一个单独的执行线程吗?
- 为什么标准委员会根据线程而不是简单地在代码排序领域定义原子?
- 除了 gcc 之外,是否有任何嵌入式编译器已经支持 C11/C++11 原子?
【问题讨论】:
-
请注意 C++11 在
[intro.multithread]/1中定义了 thread。 -
如果您只有 ISR,而不是多个处理器/内核,我会说标准的相关部分是信号,而不是线程。
-
@NathanOliver 谢谢,从问题中删除了这句话。
-
@EOF 我也会这么说,但从标准的角度来看,ISR 是信号处理程序吗?
-
我不清楚“有序原子”中的“有序”是什么意思。原子防止数据竞争;他们没有也不能保证订购。