c - C 中函数指针的原子读/写?

标签 c multithreading thread-safety function-pointers atomic

我正在编写一些在 Windows 和其他平台上运行的 C 代码。我知道诸如 InterlockedExchangePointer 之类的函数可以自动读取/写入数据指针,并且我确信其他平台也有类似的功能,但是如何以可移植的方式使用函数指针来做到这一点?是否可能,或者我是否需要锁或内存屏障或其他东西?

最佳答案

C11 atomics是基于标准的东西,但并非所有编译器都支持它。

GCC 4.1+,以及像 clang 和 ICC 这样努力与其兼容的编译器支持 __sync builtins .

我有some code它提供了您可能感兴趣的通用 API。

关于c - C 中函数指针的原子读/写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56698607/

相关文章:

c - 尝试释放内存时出现段错误

c - 用于 RaceCondition 控制的 Pthreads 和 Mutexes

c++ - 重置线程事件 - C++

c# - 试图把我的头缠绕在线程上

c++ - 使用指向方法的指针调用时使用 OpenMP

c# - 使用私有(private)静态方法使单例线程安全?

c - C如何执行括号?

c - 程序不会停止读取文件

android - 如何将接收图像的线程与url同步

c++ - C++增加原子 float