草庐IT

atomic_long_try_cmpxchg_acquire

全部标签

c++ - 使用 Int 的初始化列表初始化 Long Double 的 vector

假设我有一个简单的类:classPvector{private:std::vectorpoint_list;public:Pvector(std::initializer_listcoords):point_list(coords){}Pvector(std::initializer_listcoords):point_list(coords){}};这将无法编译,因为longdouble模板化的std::vector无法从int类型模板化的初始化列表中初始化自身.然而,这很不方便,因为删除了第二个构造函数后,我无法在我的代码中执行以下操作:Pvectorpiece_movement(

c++ - std::mutex::try_lock 虚假地失败?

也许I'mmisunderstanding关于std::mutex::try_lock:即使互斥量当前未被任何其他线程锁定,此函数也允许虚假地失败并返回false。这意味着如果没有一个线程锁定那个mutex,当我尝试一个try_lock时它可能返回false?为了什么目的?try_lock函数是否在锁定时返回falseOR如果没有人锁定它则返回true?不太确定我的非母语英语是否在愚弄我...... 最佳答案 Thismeansthatifnoonethreadhasalockofthatmutex,whenItryatry_loc

c++ - 实现 atomic *= 的不同方式

通过一本书学习,它解释了如何实现更复杂的操作,如operator*对于std::atomic.实现使用compare_exchange_weak我想我明白这是怎么回事了。现在,我自己实现了一些东西,看看吧。#include#include#include/*template::value>>std::atomic&operator*=(std::atomic&t1,Tt2){Texpected=t1.load();while(!t1.compare_exchange_weak(expected,expected*t2)){}returnt1;}*/template::value>>st

java - 限制 try block 范围。有关系吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Shouldjavatryblocksbescopedastightlyaspossible?保持较小的tryblock大小是否有任何性能优势(特别是在C++或Java中)[除了它可以为读者提供更多关于哪个语句可以抛出的信息]。鉴于以下方法,我不想抛出该方法。voidfunction()throwsException{statement1statement2statement3//canthrowstatement4statement5}这样做更好吗:选项1voidfunction(){try{stateme

c++ - 函数 try block 处理程序是什么?

我最近遇到了这个问题-什么是函数tryblock处理程序?还有,它有什么用处? 最佳答案 Here你可以找到一个很好的解释。它在构造函数的初始化列表中可能很有用:structA{private:std::strings;public:A(intvalue)try:s(boost::lexical_cast(value)){}catch(boost::bad_lexical_cast){/*handlelexical_castexceptionhere*/}}; 关于c++-函数trybl

c++ - "integer constant is too large for ‘long’ 求最大质因数时键入"

我正在解决Euler项目3:Description:Theprimefactorsof13195are5,7,13and29.Whatisthelargestprimefactorofthenumber600851475143?这是我生成答案的代码。但是我需要一个整数类型来保存600851475143。当我在Mac上的GCC上编译它时,我得到:integerconstantistoolargefor‘long’type".我预计longlong可以轻松持有这个数字。我也试过让它未签名。为什么我的代码不能保存这么小的数字?我该怎么做才能让它发挥作用?#include#includeusi

c++ - 将 C++0x 的 atomic<int> 作为非原子访问

我的程序中有一个atomic类型的原子变量.在某些地方,我不需要以原子方式访问其中的值,因为我只检查它是否为0。换句话说,在那些情况下,我想避免在有原子访问时发生的总线锁定等开销。如何以非原子方式访问原子变量。使用(int)对其进行类型转换是否足够,如下所示?如果不是,我想我该怎么做?atomicatm;intx;........x=(int)atm;//Wouldthisbeanon-atomicaccess,nobuslockingetall? 最佳答案 您无法摆脱原子性属性。但是您可以通过放宽内存排序保证来减少使用原子变量所涉

c++ - boost::atomic 的 header 是什么

我想使用boost::atomic但要包含什么header?没有boost/atomic.hpp 最佳答案 Boost.Atomic目前还不是boost的官方部分。如果您仍想使用它,则需要从here获取它。.或者你可以试试Boost.Interprocess对于原子操作,依赖编译器相关扩展,如gccs原子操作(__sync_val_compare_and_swap等),或者,如果c++11是一个选项,请使用std::atomic,这几乎与boost::atomic相同IIRC.编辑:一如既往,这些事情发生了变化:Boost.Atom

c++ - `intmax_t` 在具有 64 位 `long int` 和 `long long int` 的平台上应该是什么?

在C++标准18.4中它指定:typedef'signedintegertype'intmax_t;根据具有64位longint和64位longlongint的平台标准,这个“有符号整数类型”应该是?请注意,longint和longlongint是不同的基本类型。C++标准说:Theheaderdefinesallfunctions,types,andmacrosthesameas7.18intheCstandard.在C标准(N1548)的7.18中,它说:Thefollowingtypedesignatesasignedintegertypecapableofrepresentin

c++ - Fedora 22 - 编译 - __atomic_is_lock_free

我尝试在Fedora22上编译一个软件(SuperCollider),但我遇到了一个问题:libsupernova.a(server.cpp.o):Infunction`std::atomic::is_lock_free()const':/usr/include/c++/5.1.1/atomic:212:undefinedreferenceto`__atomic_is_lock_free'collect2:error:ldreturned1exitstatusserver/supernova/CMakeFiles/supernova.dir/build.make:96:recipefo