我正在编写一些在 Windows 和其他平台上运行的 C 代码。我知道诸如 InterlockedExchangePointer 之类的函数可以自动读取/写入数据指针,并且我确信其他平台也有类似的功能,但是如何以可移植的方式使用函数指针来做到这一点?是否可能,或者我是否需要锁或内存屏障或其他东西?
最佳答案
C11 atomics是基于标准的东西,但并非所有编译器都支持它。
GCC 4.1+,以及像 clang 和 ICC 这样努力与其兼容的编译器支持 __sync
builtins .
我有some code它提供了您可能感兴趣的通用 API。
关于c - C 中函数指针的原子读/写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56698607/