草庐IT

Lock_Time

全部标签

c++ - 为什么 iostream 包含 time.h?

考虑这段代码:#includetemplatestructtime{};intmain(){}它产生(GCC4.5):error:‘templatestructtime’redeclaredasdifferentkindofsymbol/usr/include/time.h:186:15:error:previousdeclarationof‘time_ttime(time_t*)’为什么iostream包括time_ttime(time_t*)?为什么iostream包括time_ttime(time_t*)外面std命名空间?(未回答)为什么,如果我删除template,我不会收到

c++ - 即使一切看起来都是 "good", std::mutex::lock 也会抛出吗?

来自CPPReference,没有明确说明如果锁定不会导致死锁,则std::mutex的锁定函数不会抛出。PThread'slock只有死锁错误。我不知道窗口对线程的实现。我也不知道它们是否是用作std::thread/std::mutex后端的线程的其他实现。所以我的问题是“我是否应该编写我的代码,就好像有时候,由于没有特殊原因,锁定可能会失败?”。我实际上需要在某些noexcept方法中锁定一个互斥量,并且我想确保它们是noexcept。 最佳答案 std::mutex::lock()成员函数未声明为noexcept并且来自30

c++ - 在 C++11 中,是否有 std::lock_guard 的变体在构造时解锁并在销毁时锁定?

有好几次我写了一些代码,可以从“反向”lock_guard中获益,就像在这个简短的例子中一样。std::lock_guardlg(_eventQueueMutex);while(!_eventQueue.empty()){Evente=_eventQueue.top();_eventQueue.pop();_eventQueueMutex.unlock();//ManualunlockdispatchEvent(e);_eventQueueMutex.lock();//Manuallock}有没有办法用C++11中的自动lock_guard替换内部解锁/锁定?

Elasticsearch Point in time查询

ElasticsearchPointintime查询PointintimeAPI默认情况下,搜索请求针对目标索引的最新可见数据执行,这称为时间点。Elasticsearchpit(时间点)是一个轻量级的视图,可以查看数据在启动时的状态。在某些情况下,最好使用同一时间点执行多个搜索请求。例如,如果在search_after请求之间发生刷新,则这些请求的结果可能不一致,因为搜索之间发生的更改仅在最近的时间点可见。先决条件如果启用了Elasticsearch安全特性,你必须具有目标数据流、索引或别名的读取索引权限。要在某个时间点(PIT)中搜索别名,你必须具有该别名的数据流或索引的读取索引权限。下面

c++ - mutex lock fail with invalid argument 是什么意思?

此代码在我的主进程中调用并编译正常,但在执行时总是抛出以下错误。bounded_bufferbb(200);Producer>producer(&bb);boost::threadproduce(producer);//throwsonthisline这里是执行时总是出现的错误。terminatecalledafterthrowinganinstanceof'boost::exception_detail::clone_impl>'what():boost:mutexlockfailedinpthread_mutex_lock:Invalidargument'classbounded_

c++ - 自旋锁与 std::mutex::try_lock

使用专门设计的自旋锁(例如http://anki3d.org/spinlock)与这样的代码相比有什么好处:std::mutexm;while(!m.try_lock()){}#doworkm.unlock(); 最佳答案 在典型的硬件上,有很多好处:您天真的“假自旋锁”可能会在CPU旋转时使内部CPU总线饱和,从而使其他物理内核(包括持有锁的物理内核)处于饥饿状态。如果CPU支持超线程或类似的东西,您天真的“假自旋锁”可能会消耗物理内核上的过多执行资源,使共享该物理内核的另一个线程处于饥饿状态。您天真的“假自旋锁”可能会执行无关的

c++ - 使用 boost date_time 解析和创建 HTTP 日期

我正在编写一种HTTP代理,所以我需要能够做3件事:根据RFC2616,sec3.3中指定的3种格式中的任何一种解析HTTP日期,将文件日期时间转换为HTTP日期字符串,并且将日期输出为字符串。作为引用,这些是我需要解析的日期时间示例。我将只输出第一种格式:Sun,06Nov199408:49:37GMT;RFC822,updatedbyRFC1123Sunday,06-Nov-9408:49:37GMT;RFC850,obsoletedbyRFC1036SunNov608:49:371994;ANSIC'sasctime()format我很确定Boostdate_time可以完成所有

c++函数将time_t格式化为std::string:缓冲区长度?

我想要一个函数,它将接受一个time_t参数和一个任意格式的字符串并对其进行格式化。我想要这样的东西:std::stringGetTimeAsString(std::stringformatString,time_ttheTime){structtm*timeinfo;timeinfo=localtime(&theTime);charbuffer[100];strftime(buffer,100,formatString.c_str(),timeinfo);std::stringresult(buffer);returnresult;}但是我遇到的一个问题是缓冲区长度。我正在考虑做类似

c++ - `std::mutex` 和 `std::lock` 是否保证处理器间代码中的内存同步?

我目前正在使用openMP编写在多核节点上运行的代码。openMP有一个特定的内存模型,保证在获取锁时在不同内核上运行的线程之间内存是同步的。我考虑使用C++11构造(std::threadwithstd::mutexandstd::lock)而不是openMP(因为它们更大的灵active)并想知道处理器之间的内存同步是否/如何在这里得到保证?如果没有,我该如何执行? 最佳答案 该标准在§30.4.1.2[thread.mutex.requirements.mutex]/6-25中对std::mutex的同步做出了以下保证Thee

c++ - 使用 chrono 将 time_point 转换为特定持续时间

/*definitionofstartandendstd::chrono::time_pointstart;std::chrono::time_point_end;*/std::chrono::time_pointsomeclass::spf(){_end=std::chrono::system_clock::now();std::chrono::time_pointtime(_end-start);start=std::chrono::system_clock::now();returntime;}unsignedintsomeclass::secs(){returnstd::chr