1
13
你的代码不是原子的
说
另外,在你的环绕处理中,你重置了
如果
或者
每次调用只执行一个原子操作,既安全又非常便宜。对于一般限制,您仍然可以使用
这种方法也适用于更复杂的序列和更新操作。 这就是说,这种类型的无锁操作很难正确,在某种程度上依赖于未定义的行为(所有当前编译器都是正确的,但是在C++ 0x实际上有一个定义良好的内存模型之前没有C/C++标准),并且很容易被破解。我建议使用一个简单的互斥/锁,除非您分析了它并发现它是一个瓶颈。 |
2
2
你很幸运,因为你想要的范围正好能容纳2位。
简单的解决方法:让volatile变量永远递增。但是在你读了之后,用最下面的两位(
|
3
0
在纯C中创建任何原子都是不可能的,即使
|
4
0
你有两个问题。
但即便如此,你还是特别希望
|
Darky · 多重定义…c++vsCode[重复] 2 年前 |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
Noè Murr · 如何获得C函数的基本编译二进制代码? 2 年前 |
AvirukBasak · gcc中无return语句的尾部递归 2 年前 |
hepl · gcc如何决定在创建可执行文件时使用dynamics库? 2 年前 |