草庐IT

q_atomic_increment

全部标签

c++ - std::atomic<int*>::load 是否应该进行比较和交换循环?

总结:我曾预料到std::atomic::load与std::memory_order_relaxed将接近直接加载指针的性能,至少当加载的值很少改变时。我发现原子加载的性能比VisualStudioC++2012上的正常加载差得多,所以我决定进行调查。事实证明,原子负载是作为compare-and-swap实现的。循环,我怀疑这不是最快的实现。问题:std::atomic::load有什么原因吗?需要进行比较和交换循环吗?背景:我相信MSVC++2012正在基于此测试程序对指针的原子加载执行比较和交换循环:#include#includetemplate__declspec(noin

c++ - 在使用 libstdc++ 进行调试期间强制在 std::atomic 中使用锁

我已经做了一些谷歌,似乎无法为此打开一个GCC选项或libstdc++宏。是否可以在所有std::atomic模板特化上强制使用内部锁定。在某些平台上,一些特化无论如何都会被锁定,因此这看起来确实是一个可行的选择。在过去,我发现使用std::atomic在使用诸如Valgrind(Helgrind或DRD),因为大量的误报。如果原子学的使用足够普遍,抑制文件似乎不是一个非常可扩展的解决方案。 最佳答案 没有办法,AFAIK。GCC通过无锁内置函数(__atomic_fetch_add、__atomic_test_and_set等)实

c++ - 在 MPI 中对 cout 的 "atomic"调用

我感兴趣的是OpenMPI中是否有命令或技术来进行原子调用以写入stdout(或者就此而言,任何流)。我注意到,在MPI程序的执行过程中,写入cout(或其他流)的调用可能会变得困惑,因为每个proc都可能在到达特定代码段时写入。报告结果时,一行可以被多个proc写入,混淆了问题。所以2个不同的过程可能会做这样的事情://Proc10-resultscalculatedsomewhereabove//result1=10//result2=11cout和://Proc20-resultscalculatedsomewhereabove//result1=20//result2=21co

C++ std::atomic union

如何使用std::atomic将union设置为原子union?还是我必须声明union的成员是原子的?typedefunion{intinteger;floatflt;doubledbl;int*intArray;float*floatArray;unsignedchar*byteArray;}ValueUnion;classFooClass{public:std::atomicvalue;};访问union报错:foo->value.floatArray=NULL;error:nomembernamed'floatArray'in'std::__1::atomic'foo->val

使用 std::atomic 的 C++11 无锁队列(多作者,单消费者)

我使用C++11中的新std::atomic生成了无锁(lockfree)队列的简单实现。我在这里看不到我做错了什么。#includetemplateclasslockless_queue{public:templatestructnode{node(constDataType&data):data(data),next(nullptr){}DataTypedata;node*next;};lockless_queue():head_(nullptr){}voidproduce(constT&data){node*new_node=newnode(data);//putthecurre

c++ - 赋值是否等同于 std::atomic<bool> 的加载/存储

我看到这可能在问题MustIcallatomicload/storeexplicitly?中得到了回答.因此,为了清楚起见,我将简明扼要地重申我的问题,希望future的读者能明白这一点。是std::atomicb(false);boolx=b;与相同std::atomicb(false);boolx=b.load();和std::atomicb(false);b=true;与相同std::atomicb(false);b.store(true);如果确实如此,那么:为什么有两个选项?明显的好处是什么?在处理原子时,更喜欢更冗长的load()/store()而不是可能令人困惑的赋值(=

c++ - 为什么 std::atomic_thread_fence 有 "C"链接?

我猜不出为什么这个函数需要“C”而不是“C++”链接。 最佳答案 由LWGissue1479添加这是针对C++11的最后一分钟评论。此更改的基本原理是C语言兼容性(C11线程库在stdatomic.h中具有同名函数atomic_thread_fence)。据我所知,C和C++原子库可以共存一直是一个计划:其他兼容性示例是std::atomic的C兼容类型别名,例如atomic_int和C兼容性宏ATOMIC_VAR_INIT 关于c++-为什么std::atomic_thread_fen

ios - 使 UIStepper 增加 increment 5

有没有一种方法可以使UIStepper以5为单位进行计数,而不是一次一次递增?即,点击+标签会显示5、10、15、20等,或者每次都减去5?到目前为止,我已经尝试过value+5;但这不起作用。任何帮助都将不胜感激。谢谢! 最佳答案 做[setStepValue:5];例如:UIStepper*stepper=[[UIStepperalloc]initWithFrame:CGRectMake(120,20,0,0)];[steppersetStepValue:5]; 关于ios-使UIS

c# - Monotouch Automated Incremental Build Number 带版本号

关于使用C#开发MonotouchIOS:我正在尝试在我的MonotouchIOS项目中实现一个自动递增的构建版本号。[Major].[Minor].[Build]之类的东西在每次构建时自动递增[Build]部分就可以了。我在下面找到了这篇文章,但它似乎使用的是ObjectiveC,我无法弄清楚如何使用MonotouchC#使其正常工作。http://monotouch.2284126.n4.nabble.com/How-to-increment-the-iPhone-Application-Version-number-on-every-build-td4425363.html在Mo

ios - 核心图 : Change Axis Increment Label Color?

我正在研究CorePlot的实现,它使用黑色View上所有白色元素的图表。图表运行良好,但我无法将轴增量标签设置为正确的颜色。澄清一下,轴的标签是正确的(时间和用法),但轴刻度线上的标签仍然是黑色的。我目前看到的:将我的View背景更改为白色以确认刻度标签在那里:如果有人能指出正确的方向,让刻度标记标签变成白色而不是黑色,以及使穿过图表的水平线变成白色而不是黑色,我将不胜感激。提前致谢! 最佳答案 线条样式和文本样式都具有颜色属性(分别为lineColor和color)。使用以下轴属性设置样式:titleTextStyle:轴标题的