C11和C++11通过执行线程来定义原子性。尽管在托管环境中,“线程”是明确的,但在独立语言实现中,“线程”这个词是一个模糊的术语。
- 如何在必须在程序内部实现所有线程的自由实现中正式理解C11和C++11中指定的原子性?例如:ISR是否是单独的执行线程?
- 为什么标准委员会将原子性的定义限制在执行线程而不是代码排序领域中呢?
- 除了gcc之外,是否有其他嵌入式编译器支持C11/C++11原子性?
raise
引起的信号没有区别。它只是一个异步函数调用,并且占用从被中断的线程获取的堆栈空间。它绝对不是一个线程;它是现有线程上的寄生体。因此,对于ISR,我会选择信号的保证而不是线程的保证。operator new
或operator delete
时,你得到的唯一承诺是第一个“分配存储”,第二个“回收...存储”。... - Pete Becker
[intro.multithread]/1
中定义了thread。 - NathanOliver