![]() |
1
14
对于将来偶然发现这一点的人来说,C11原子是现在实现这一点的最佳方式——我相信它们将被纳入GCC 4.9。 |
![]() |
2
14
从C11开始,有一个可选的 Atomic library
原子能
编译器调用
|
![]() |
3
10
OSX具有多种功能 Osatomicad32() 看见 The Threading Programming guide “使用原子操作”一节。 而对于Windows,则有 与gcc内置组件一起 __同步获取和添加() 和朋友(已在上面链接),您应该 请注意,我自己还没有使用它们,但可能会在未来几天内这样做。 |
![]() |
4
4
否,POSIX没有指定 任何 你要么不得不使用非标准方式,要么坚持使用ptrheads以实现可移植性。 |
![]() |
5
3
通过在Glibc2.28中添加线程,我们可以在纯C11中同时执行原子和线程。 https://en.cppreference.com/w/c/language/atomic main.c
编译并运行:
可能的产出:
由于线程间对非原子变量的快速访问,非原子计数器很可能比原子计数器小。 pthreads示例可在以下位置找到: How do I start threads in plain C? 在Ubuntu 18.04(glibc 2.27)中通过从源代码编译glibc进行测试: Multiple glibc libraries on a single host Ubuntu18.10有Glibc2.28,所以应该在那里工作。 |
![]() |
6
0
AFAIK没有跨平台的方法来进行原子操作。那里可能有图书馆,但我不知道。不过,自己动手并不特别难。 |
![]() |
7
0
我想没有。 当然,许可证允许的情况下,解决这个问题的一种方法是从Linux内核空间复制相关的每体系结构实现。我没有密切关注这些原语的发展,但我猜它们确实是原语,即不依赖内核中的其他服务或API。 |
![]() |
Al-geBra · 在C中向POSIX共享内存对象添加一维数组 6 年前 |
![]() |
yaobin Anycorn · 如何导致Linux管道失败? 6 年前 |
![]() |
Omnifarious · 如何在Linux中删除补充组? 7 年前 |