草庐IT

atomic-long

全部标签

c++ - 应该使用哪个函数将字符串转换为 long double?

请注意,一般来说,double不同于longdouble。strtod将string转换为double,但是将string转换为longdouble应该使用哪个函数? 最佳答案 在C++03中,使用boost::lexical_cast,或者:std::stringstreamss(the_string);longdoubleld;if(ss>>ld){//itworked}在C99中,使用strtold。在C89中,使用sscanf和%Lg。在C++11中使用stold。关于每个人接受的格式可能存在细微差别,因此请先检查详细信息.

c++ - std::atomic 将一对原子 int32 视为一个原子 int64?

我有一对unsignedint32std::atomic_start;std::atomic_end;有时我想通过比较交换来设置开始或结束,所以我不希望在整个64位对上使用CAS可能导致虚假故障。我只想使用32位CAS。_end.compare_exchange_strong(old_end,new_end);现在我可以将开始和结束作为一个64位原子读取来获取。或者两个单独的32位读取。执行一次64位原子提取(编译器添加适当的内存栅栏)而不是使用两个内存栅栏进行两次单独的32原子位读取(或者编译器会优化它吗?)会不会更快?如果是这样,我将如何在C++11中做到这一点?

c++ - std::atomic::load 的内存排序行为

我是否错误地假设atomic::load也应该充当内存屏障以确保所有先前的非原子写入将对其他线程可见?举例说明:volatileboolarm1=false;std::atomic_boolarm2=false;booltriggered=false;线程1:arm1=true;//std::std::atomic_thread_fence(std::memory_order_seq_cst);//thiswoulddothetrickif(arm2.load())triggered=true;线程2:arm2.store(true);if(arm1)triggered=true;我预

c++ - unsigned long 的类型不同于 Windows 上的 uint32_t 和 uint64_t (VS2010)

在Windows7、32位的VisualStudio2010上,unsignedlong似乎是与uint32_t和uint64_t截然不同的类型。看下面的测试程序:#include#includetemplatestructis_same_type{staticconstboolvalue=false;};templatestructis_same_type{staticconstboolvalue=true;};#defineTO_STRING(arg)TO_STRING_IMPL(arg)#defineTO_STRING_IMPL(arg)#arg#definePRINT_SAME

C++ chrono - 将持续时间作为 float 或 long long

我有一个持续时间typedefstd::chrono::high_resolution_clockClock;Clock::time_pointbeginTime;Clock::time_pointendTime;autoduration=std::chrono::duration_cast(endTime-beginTime);我在std::chrono::milliseconds中得到了duration。但我需要duration作为float或longlong。如何做到这一点? 最佳答案 来自documentationtempl

c++ - 如何正确地将 time_t 转换为 long int?

我仍在学习C++中的类型转换,目前我正在做这件事longintt=time(NULL);我正在使用VS2013并注意到从“time_t”到“long”警告的转换,所以我想我应该将其强制转换为看起来像;longintt=static_casttime(NULL);然而,这还行不通,但结合静态转换和C风格转换仍然有效longintt=static_cast(time(NULL));我只是想知道是否有人可以帮助阐明这一点? 最佳答案 time(NULL)不是强制转换而是返回time_t的函数调用.自time_t与longint不完全相同的

c++ - unsigned int 到 unsigned long long 定义明确吗?

我想看看当unsignedlonglong被赋值给unsignedint时幕后发生了什么。我制作了一个简单的C++程序来试用它,并将所有io移出main():#include#includevoidusage(){std::cout\n";exit(0);}voidatoiWarning(intfoo){std::cout生成的程序集为main生成了这个:0000000000400950:400950:55push%rbp400951:4889e5mov%rsp,%rbp400954:4883ec20sub$0x20,%rsp400958:897decmov%edi,-0x14(%rb

c++ - long long 有定义吗?

在哪里检查是否定义了longlong类型?我想做这样的事情:#ifdefLONGLONG#definelong_longlonglong#else#definelong_longlong#endif 最佳答案 LLONG_MAX给出longlong可表示的最大值;如果您的实现不支持longlong,它不应该定义LLONG_MAX.#include#ifdefLLONG_MAX#definelong_longlonglong#else#definelong_longlong#endif这不是一个完美的解决方案。longlong在C++

解决Idea启动项目失败,提示Error running ‘XXXApplication‘: Command line is too long

IDEA版本为:IntelliJIDEA2018.2(UltimateEdition)一、问题描述有时当我们使用IDEA,Run/Debug一个SpringBoot项目时,可能会启动失败,并提示以下错误。Errorrunning'XXXApplication':Commandlineistoolong.ShortencommandlineforXXXApplicationoralsoforSpringBootdefaultconfiguration.意思是错误运行某程序:命令行太长。为某程序或为SpringBoot默认配置缩短命令行。如下图:出现这种报错的原因是类路径太长或者VM参数太多以致超

c++ - 使用 atomic_flag 自旋锁进行内存排序

我正在尝试熟悉c++11的新内存排序概念,并且相信我实际上已经很好地掌握了它们,直到我偶然发现了自旋锁的这个实现:#includenamespaceJayZ{namespaceTools{classSpinLock{private:std::atomic_flagspin_lock;public:inlineSpinLock(void):atomic_flag(ATOMIC_FLAG_INIT){}inlinevoidlock(void){while(spin_lock.test_and_set(std::memory_order_acquire));}inlinevoidunlock