stdatomic.h
,但似乎没有减量和测试 *** 作. 这是最好的(即最便携的)方式吗?我可以使用stdatomic.h函数来实现吗?
这是引用计数(伪代码)的核心:
retain(object) { ++object.ref_count; // pretty easy to make this atomic} release(object) { if (--object.ref_count == 0) // need this to be atomic also free(object)}解决方法 你似乎对C11的原子有一个误解. Atomic限定类型,而不是单个 *** 作.
如果使用_Atomic声明变量,则对它的所有 *** 作都是原子的.因此,如果您对原子 *** 作的默认“顺序一致性”(您应该)感到满意,那么您只需要一个额外的_Atomic资格.并且前缀 – 运算符应该可以满足您的需要.
如果你想处理不同类型的一致性,可以使用atomic_fetch_sub,例如:只有那时你才能获得修改前的值,而不是之后的值.因此,不应将其与0进行比较,而应将其与1进行比较.
总结以上是内存溢出为你收集整理的C中的原子递减和测试全部内容,希望文章能够帮你解决C中的原子递减和测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)