草庐IT

timed_wait

全部标签

c++ - c/c++ - 通过套接字发送 time_t 的最安全方式

我已经设置了一个C++服务器/客户端环境,并试图从服务器向客户端发送一个time_t值(这在任何服务器中都是有用的)。但是我遇到了一个令人头疼的问题:time_t似乎不符合任何大小规范。我想知道通过网络发送time_t的最安全(更便携)的方法是什么。这是一个小例子:time_tT=time(NULL);unsignedchar*P=(unsignedchar*)&T;//...Convertittonetworkbyteorder,etc.//Here,'s'wouldbethesocket,and'S'//thesizeofthedatathatisgoingto//besentse

c++ - std::timed_mutex::try_lock* 虚假地失败

try_lock*是指try_lock()、try_lock_for()和try_lock_until()。根据cppreference,这三种方法都可能会虚假地失败。以下引用自try_lock_for()的描述Aswithtry_lock(),thisfunctionisallowedtofailspuriouslyandreturnfalseevenifthemutexwasnotlockedbyanyotherthreadatsomepointduringtimeout_duration.我知道std::condition_variable可能会发生虚假唤醒及其背后的基本原理。但

C++:你会选择 boost::date_time 还是 icu::date/time 库?

我的应用程序需要自定义时间和日期设置功能。我检查了ICU和boost::date_time库。从完整性的角度来看,两者似乎都符合我的要求。我想知道两者之间是否有任何偏好,依据是什么?哪个会在性能上得分? 最佳答案 如果没有关于您的特定用例和环境的更多信息,就无法给出关于哪个库是否优于另一个库的明确答案。正如Xeo所建议的那样,分析是解决性能问题的最佳方式。如果您的用例包括“一般”日期/时间操作(即,您还不知道您需要的所有日期/时间操作),有几个选择你必须做。作为Boost.DateTimedocumentation解释说,您可以在这

c++ - 如何在 C++ 中将 ISO 8601 字符串转换为 time_t?

有谁知道如何从ISO-8601开始-格式化日期/时间字符串到time_t?我正在使用C++,它需要在Windows和Mac上工作。我已经编写了代码,但我确信有一个更“标准”的版本。我会得到一个像2011-03-2120:25这样的日期,我必须判断这个时间是过去还是将来。 最佳答案 我认为一个丑陋的hack会很有趣:因为您只想确定哪个日期/时间更大,您可以将日期转换为字符串并比较字符串。;-)(好处是你不需要strptime,它不是随处可用。)#include#includeintmain(intargc,char*argv[]){c

c++ - Windows 上的 std::conditional_variable::wait_for、std::thread::sleep_for 受调整时钟的影响

嗯。我有Win10x64和这个非常简单的代码:intmain(){std::conditional_variablecv;std::mutexm;std::unique_locklock(m);while(1){cv.wait_for(lock,1000ms,[](){returnfalse;});std::cout是的。代码就像我期望的那样工作;表明'!'每一秒。但是,如果我更改本地时间(例如减去1小时/分钟),它会永远有效。如果我用WinAPISleep(1000)替换cv.wait_for(...)它工作正常。WinAPISleepConditionVariableCS也能正常工

c++ - 将字符串从 __DATE__ 转换为 time_t

我正在尝试将__DATE__宏生成的字符串转换为time_t。我不需要成熟的日期/时间解析器,只处理__DATE__宏格式的东西会很棒。预处理器方法会很漂亮,但函数也同样有效。如果相关,我正在使用MSVC。 最佳答案 编辑:更正后的函数应如下所示:time_tcvt_TIME(charconst*time){chars_month[5];intmonth,day,year;structtmt={0};staticconstcharmonth_names[]="JanFebMarAprMayJunJulAugSepOctNovDec"

c++ - 为什么在 Windows 上没有微秒分辨率的 boost::date_time?

在Win32系统上boost::date_time::microsec_clock()是使用ftime实现的,它只提供毫秒分辨率:LinktodocStackoverflow上有一些问题/答案说明了这一点并链接了文档,但没有解释为什么会这样:Stackoverflow#1Stackoverflow#2似乎有一些方法可以在Windows上实现微秒分辨率:GetSystemTimePreciseAsFileTime(Win8++)QueryPerformanceCounter我感兴趣的是为什么Boost以这种方式实现它,而反过来可能有更合适的解决方案? 最佳答案

Java 互操作性 : how to declare a compile-time array constant in Kotlin?

我有这个Javaannotationdeclaration并想在Kotlin中使用它classCurlCommand{Parameter(names="-groups",description="Comma-separatedlistofgroupnamestoberun")vargroups:Array?=null}编译器报告TYPE_MISMATCH必需:kotlin.Array找到:kotlin.String我试过了Parameter(names=Array(1,{i->"-groups"}),description="Comma-separatedlistofgroupname

Java 互操作性 : how to declare a compile-time array constant in Kotlin?

我有这个Javaannotationdeclaration并想在Kotlin中使用它classCurlCommand{Parameter(names="-groups",description="Comma-separatedlistofgroupnamestoberun")vargroups:Array?=null}编译器报告TYPE_MISMATCH必需:kotlin.Array找到:kotlin.String我试过了Parameter(names=Array(1,{i->"-groups"}),description="Comma-separatedlistofgroupname

c++ - 使用比较运算符比较 time_t 值

我有2time_t值,我想找出哪个更大。time_t在内部__int64在我的平台上。我可以使用吗?,>和==运算符比较值?我不想知道这两个时间值之间的区别。代码只会在Windows上运行,所以我不关心可移植性。这样比较值是否正确? 最佳答案 根据C标准的7.27.1(3)部分(在这种情况下C++标准指的是)time_t是一个实型,在6.2.5(17)中定义为整型或浮点型。只要您不明确地假设整数(即通过执行time_t;intx=t;),这可能会失去精度,您是安全的。编辑:实际上,我收回了这一点。如果你去thislink,post#