草庐IT

Lock_Time

全部标签

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++ - 为什么 std::lock 不支持超时?

如果我想在不冒死锁风险的情况下获取多个锁,我可以使用std::lock函数:intdata1,data2;std::mutexm1,m2;std::unique_locklock1(m1,std::defer_lock);std::unique_locklock2(m2,std::defer_lock);std::lock(lock1,lock2);//guaranteeddeadlock-free//workwithdata1anddata2但是如果我想在指定的时间段内获取锁,否则超时怎么办?没有像try_until这样的锁,类似于wait_until的futures和条件变量,这是

c++ - 为什么 std::atomic_is_lock_free 不是静态 constexpr?

我很困惑。实现怎么可能只在运行时知道类型是否是原子的? 最佳答案 编译器可能不知道代码将在哪个CPU上运行,并且CPU的无锁能力可能不同。例如,CPU可能不支持对long类型的原子操作(因此可能需要锁),但如果系统只有一个内核,它们可能会自动成为原子操作,因为它们不能被中断并且没有其他核心可以与之竞争(因此不需要任何特殊的东西并且类型是无锁的)。 关于c++-为什么std::atomic_is_lock_free不是静态constexpr?,我们在StackOverflow上找到一个类似

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++ - 将字符串从 __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以这种方式实现它,而反过来可能有更合适的解决方案? 最佳答案

c++ - std::unique_lock<std::mutex> 禁止dll卸载

我在卸载dll时遇到问题。就像this一但退出不同。我正在使用LoadLibraryA加载一个dll然后调用一个函数并用FreeLibrary关闭dll.但是,dll并没有卸载,但FreeLibrary返回成功。减少代码:voidfoo(){std::unique_locklock(mtx_);}在调试代码和查看ProcessExplorer时unique_lock创建第二个线程,但是为什么呢?此外,只要应用程序运行,该线程就会运行。没有别的了;dll没有其他句柄,没有其他功能。此外,dll仍在程序中加载。如果我删除上面的行,一切都很好。dll卸载正常,没有额外的线程。所以我的问题是,

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