C中的primefaces读数

根据Are C ++读取和写入int Atomic? ,由于处理器缓存的问题,int的读取(以及因此指针 – 或者我认为)在C中不是primefaces的。所以,我的问题是是否有一些我可以用来制作读取primefaces的汇编,或者我需要使用锁吗? 我查看了几组primefaces操作库,到目前为止,我无法找到primefaces读取的函数。

编辑:编译器: Clang 2.9 编辑:平台: x86(64位)

谢谢。

通常,primefaces操作库不提供简单的primefaces提取,因为它很少使用; 你读取了这个值然后用它做了一些事情,并且在那个事情期间需要保持锁定,以便你知道你读取的值没有改变。 因此,有一种primefaces测试和集合(例如gcc__sync_fetch_and_add() )执行锁定,而不是primefaces读取,然后在持有锁定时执行正常的非同步读取。

例外是设备驱动程序,您可能必须实际锁定系统总线以获得相对于总线上其他设备的primefaces性,或者实现primefaces操作库的锁定原语; 这些本质上是机器特定的,你将不得不深入研究汇编语言。 在x86处理器上,有各种primefaces指令,加上一个lock前缀,可以应用于访问内存并在操作期间保持总线锁定的大多数操作; 其他平台(SPARC,MIPS等)具有类似的机制,但通常细节不同。 您将不得不知道您正在编程的CPU,在这种情况下很可能必须了解机器的总线架构。 这个库很少有意义,因为你不能跨函数入口/出口保持总线或内存锁,即使使用宏库也必须要小心,因为暗示人们可能在宏调用之间散布正常操作可能会破坏锁定的事实。 用汇编语言编写整个关键部分几乎总是更好。

gcc有一组primefaces内置函数,但它没有普通的primefaces提取,但你可以做__sync_fetch_and_add(&, 0); 解决这个问题

GCC文档就在这里 ,上面有博客文章

编辑:啊,铿锵,我知道LLVM IR中有primefaces,但我不知道clang是否以任何方式暴露它们,但它可能值得一试,看它是否抱怨使用gcc,它可能会支持他们。 编辑:嗯,它似乎有一些东西…… clang docs并不像gcc那么多,而且文档似乎暗示它也可以做gcc的。