草庐IT

atom_count

全部标签

java - jdbctemplate count queryForInt 并传递多个参数

如何在jdbcTemplatequeryForInt中传递多个参数来获取计数。这个我试过了,Integercount=this.jdbcTemplate.queryForInt("selectcount(name)fromtable_namewhereparameter1=?andparameter2=?",newObject[]{parameter1,parameter2});但它显示queryForInt作为罢工。 最佳答案 queryForInt()和queryForLong()自版本3.2.2起已弃用(如有错误请指正)。要修

c++ - 这是 std::bitset::operator^= 和 std::bitset::count 的正常行为吗?如果是这样,为什么?

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭4年前。Improvethisquestion记录在案here,std::bitset::operator^=返回*this。从这一点以及对诸如+=,|=,*=等运算符的“通常”解释,我们可以合理地假设给定的std::bitset实例(相同size)a和b,表达式(a^=b).count()将存储按位XOR的结果a中的操作,count()将返回

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

c++ - 为什么 std::count 返回一个带符号的整数?

这个问题在这里已经有了答案:WhydoestheC++standardalgorithm"count"returnadifference_typeinsteadofsize_t?(7个答案)关闭9年前。看到std::count我真的很惊讶返回了iterator_traits::difference_type,这又指代longint在我的平台上。这是为什么呢?容器内的负计数元素没有任何意义。

使用 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