草庐IT

atom_count

全部标签

c++ - STL bitset::count() 方法的性能如何?

我四处搜索,找不到bitset::count()的性能时间规范。有人知道它是什么(O(n)或更好)以及在哪里可以找到它吗?编辑由STL我仅指标准模板库。 最佳答案 我在我的电脑上读取了这个文件(C:\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include\c++\bitset)。看这些///Returnsthenumberofbitswhichareset.size_tcount()const{returnthis->_M_do_count();}size_t_M_do_count()const{si

c++ - 两个 std::atomic 可以成为一个 union 的一部分吗?

我想这样做:union{std::atomicu128;struct{std::atomicu64_1;std::atomicu64_2;};};多个线程将读取和写入union的两个部分。安全吗?编辑:我使用Linux,x86_64,clang3.3Edit2:我希望能够递增和递减u64_1,读取u64_2,并写入u128(compare_exchange)Edit3:如果我使用atomicbuiltinfunctions会怎么样??union将如下所示:union{uint128_tu128;struct{uint64_tu64_1;uint64_tu64_2;};};u64_1将映

c++ - 如果没有 if,std::count_if 会更快吗?

这是gccstd::count_if代码templatetypenameiterator_traits::difference_typecount_if(_InputIterator__first,_InputIterator__last,_Predicate__pred){[snip]typenameiterator_traits::difference_type__n=0;for(;__first!=__last;++__first)if(__pred(*__first))++__n;return__n;}我的问题:使用它会更好(即更快)吗__n+=__pred(*__first)

c++ - std::atomic 的默认值是多少?

我发现在实践中,对于各种C++11/C++14编译器,std::atomic有一个未定义的初始值,就像它是一个"生”类型。也就是说,我们期望对于表达式inta;a可以有任何值。对于表达式std::atomicb;b也可以有任何值。换句话说,std::atomicb;//bisundefined不等于std::atomicb{0};//b==0或到std::atomicb{};//b==0因为在后两种情况下,b被初始化为一个已知值。我的问题很简单:在C++11或C++14规范中的什么地方记录了这种行为? 最佳答案 [atomics.t

c++ - std::atomic<uint_least8_t> 行为

在一个系统上:typedefunsignedcharuint8_t;typedefunsignedshortuint16_t;std::atomic::is_always_lock_free//=>falsestd::atomic::is_always_lock_free//=>true据我了解,类型std::atomic将是8位并且不是无锁的。如果是这样,如果我想要一个至少8位且始终无锁的原子类型,我应该怎么写?(假设存在这种类型)是否有比以下更好的选择:std::atomic::is_always_lock_free,uint8_t,uint16_t>::type>(为简单起见,我

c++ - 如何正确使用 std::atomic_signal_fence()?

cppreference.com将此函数记录为“线程与在同一线程中执行的信号处理程序之间的栅栏”。但是网上没找到例子。我想知道以下伪代码是否正确说明了std::atomic_signal_fence()的功能:intn=0;SignalObjects;voidthread_1(){s.wait();std::atomic_signal_fence(std::memory_order_acquire);assert(1==n);//neverfires???}voidthread_2(){n=1;s.signal();}intmain(){std::threadt1(thread_1);

c++ - 为什么 std::mutex 比 std::atomic 快?

我想在多线程模式下将对象放入std::vector中。所以我决定比较两种方法:一种使用std::atomic,另一种使用std::mutex。我看到第二种方法比第一种方法更快。为什么?我使用GCC4.8.1,在我的机器(8线程)上,我看到第一个解决方案需要391502微秒,第二个解决方案需要175689微秒。#include#include#include#include#include#includeintmain(intargc,char*argv[]){constsize_tsize=1000000;std::vectorfirst_result(size);std::vecto

windows - Windows 中的 ElasticSearch docker image vm max map count

我是Docker和Elasticsearch的新手。我正在使用Windows7机器。我正在使用docker-composeup来启动docker容器。我的yml文件有elasticsearch:image:elasticsearch:5.1.1environment:ES_JAVA_OPTS:"-Xms1g-Xmx1g"连同其他链接图像。我正在使用docker调出elasticsearch图像,当我这样做时出现以下错误[36melasticsearch_1|←[0mERROR:bootstrapchecksfailed[36melasticsearch_1|←[0mmaxvirtual

c# - windows平台下可以获取到每个进程的L2 cache miss count吗?

我想计算每个进程的内存带宽。任何人都可以告诉我如何获得每个进程的L2缓存未命中。谢谢辉 最佳答案 有一个screenshot关于这个IntelPerformanceCounterMonitor显示L2缓存未命中的页面,但我不知道它是否适用于每个进程。 关于c#-windows平台下可以获取到每个进程的L2cachemisscount吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

c++ - 是否可以哄 std::atomic<T> 输出 CMPXCHG16B

对于我对在Windowsx64上使用原子互锁操作不感兴趣的类型,是否可以哄骗std::atomic输出CMPXCHG16B,或者我是否只需要接受它并手动执行原子操作?我可以让GCC/Clang在Linux上执行此操作,所以我怀疑这只是Microsoft标准库的问题。structByte16{int64_ta,b;};std::atomicatm;Byte16a={1,2};atm.compare_exchange_strong(...);//ThishasalockonWindows,notonLinuxversionofcode 最佳答案