- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果条件 c
成立,我需要自动分配 a = b
,如果条件不成立,则不分配。有没有办法在 C/C++ 中执行此操作?
澄清:我的意思是原子地“测试和分配”,而不是“原子地分配”。
最佳答案
一般情况下,没有一项操作可以完成您的要求。 覆盖的常见情况是您的条件 c
测试 a
是否已设置为某个特定值的情况。在这种情况下,您需要的操作是比较和交换,例如:
std::atomic<int> value;
...
int expected = 9;
bool result = std::atomic_compare_exchange_strong(&value, &expected, 10);
只有当条件 value == 9
成立时,这里的 value
才设置为 10,整个操作是原子的。
如果您的条件不采用这种形式,那么您将不得不使用互斥锁(或其他一些多操作机制)来实现原子性。
关于c++ - 如果条件在 C/C++ 中成立,如何自动设置一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40503161/
我在玩弄模板并尝试实现以下助手。 first_constructible::type 这将返回第一种 Types可从 Args... 构建.第一个问题显然是在 struct 中有两个参数包,所以我将用
我正在我的 Kotlin 项目中实现 RxJava。将从 Java 到 Kotlin 的自动翻译应用到以下代码: @Override protected void onCreate(Bundle sa
这个问题在这里已经有了答案: Comparing String to Integer gives strange results (5 个答案) 关闭 9 年前。 下面代码的输出是“失败”,但如果我
Deno & Node.js 作者 Ryan Dahl 和联合创始人 Bert Belder 宣布成立了 Deno 公司。 Ryan Dahl 和 Bert Belder 在博客中阐述
我最近参加了一个代码力量竞赛。在比赛的编辑部分,我看到了按位运算符之间的一种美妙关系,即 x + y = x & y + x |是的我还不知道证据。我拿了几个数字来看看这个等式是否正确。我很高兴知道这
我是一名优秀的程序员,十分优秀!