C语言中强制转换类型:什么是C语言中的原子类型(c atom)

关于C语言中强制转换类型的问题,在c atom中经常遇到, 我记得我在 C语言中遇到了某些类型,称为原子类型,但我们从未研究过它们。

我记得我在 C语言中遇到了某些类型,称为原子类型,但我们从未研究过它们。

那么,它们与intfloatdoublelong等常规类型有何不同,它们的用途是什么?

18

原子类型是保证在单个指令中进行读取和写入的类型。来自gnu.org的更多说明:

24.4.7.2 原子类型

为了避免中断对变量的访问的不确定性,您可以使用访问总是原子的特定数据类型:sig_atomic_t。读取和写入此数据类型保证在单个指令中发生,因此处理程序无法在访问的“中间”运行。

类型sig_atomic_t始终是整数数据类型,但它是哪一个,以及它包含多少位,可能因机器而异。

数据类型:sig_atomic_t
这是整数数据类型。此类型的对象始终以原子方式访问。

实际上,您可以假设int是原子的。您也可以假设指针类型是原子的;这非常方便。这两个假设在 GNU C 库支持的所有机器上以及我们知道的所有 POSIX 系统上都是正确的。

有关更多详细信息和一些 C11 特定的内容,请查看CppReference.com(无隶属关系)。

-1

这是 IoS 机器的一个例子。@stackoverflow

Ed Cottrells 的答案很好,但是如果您想知道浮点数和双打整数和长数之间的区别。这些类型使用不同的字节大小 double floats 将 raddix 数据存储为小数。并且有符号使用两个补码向后存储负数,因此请尝试将有符号转换为无符号类型。Look up maxsize int long etc.

要真正使用原子类型,您需要知道为什么创建它们。对读写 Assembly 低级编码访问的需求与多核机器上的互斥锁信号量和多线程有关。

这个想法是两个进程不应该能够同时修改相同的数据。但是我听说当两个进程试图锁定一个内存位置或文件时会发生锁锁。所以在 linux 中有 NMI 看门狗被黑客攻击以扫描这些锁。在我的单核机器上我必须用 sudo sysctl kernel.nmi_watchdog = 0 禁用此

尝试了解更多信息

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(120)
C5盲盒:C/Arduino开关盒
上一篇
Python时间差计算:计算时间差(how do i calculate time)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(55条)