草庐IT

async_condition_variable

全部标签

c++ - boost::asio::async_read_until 问题

我正在尝试修改来自boostasio的echo服务器示例,当我尝试使用boost::asio::async_read_until时遇到了问题。这是代码:#include#include#include#includeusingboost::asio::ip::tcp;classsession{public:session(boost::asio::io_service&io_service):socket_(io_service){}tcp::socket&socket(){returnsocket_;}voidstart(){std::coutsocket(),boost::bind

c++ - 由于超时取消async_read

我正在尝试围绕async_read编写一个包装器同步方法,以允许在套接字上进行非阻塞读取。根据互联网上的几个例子,我开发了一个似乎几乎正确但不起作用的解决方案。该类声明了这些相关的属性和方法:classcommunications_client{protected:boost::shared_ptr_io_service;boost::shared_ptr_socket;boost::array_data;boost::mutex_mutex;bool_timeout_triggered;bool_message_received;boost::system::error_code_e

c++ - 嵌套模板类中的 std::conditional

我正在尝试以STL的样式实现RingBuffer。这意味着我还为其实现了一个迭代器,它必须作为const或非const工作。这只是迭代器部分:#include#includetemplateclassRingBuffer{public:classIterator;//actualRingBufferimplementationhere};templateclassRingBuffer::Iterator{public:typedefstd::ptrdiff_tdifference_type;typedefTvalue_type;typedeftypenamestd::condition

c++ - std::async "store"如何成为任意异常?

我无法理解std::async怎么可能存储任何异常,而不仅仅是从std::exception派生的东西。我玩弄了下面的代码#include#include#includevoidf(){std::coutfut=std::async(std::launch::async,f);std::cout我异步启动f(),然后在f中抛出一个int。神奇的是,这个int被std::async返回的future捕获并存储。我知道可以在std::async中catch(...)异常,但后者如何在不知道异常类型的情况下存储它?异常不是从某个基类派生的(在这种情况下,可能可以通过一些Base::clone

c++ - "no matching function for call to ‘async(std::launch, <unresolved overloaded function type>, std::string&)’“

我正在尝试使用std::async创建线程,但我不断收到错误“没有匹配函数调用‘async(std::launch,,std::string&)’”在行上ConnectFuture=std::async(std::launch::async,Connect_T,ip);这是产生这种行为的代码:#includeclasslibWrapper{public:voidConnect(std::stringip);voidConnect_T(std::stringip);private:std::futureConnectFuture;};voidlibWrapper::Connect(std

c++ - 实现开关类型特征(使用 std::conditional_t 链调用)

这就是我想要的,一个返回第一个具有条件==true的类型的“开关”类型特征:ext::select_t等,并能够添加任意数量的条件/类型对。我可以用std::conditional这样做(随机示例):template::value,//RETURNINTstd::uniform_int_distribution,//ELSEstd::conditional_t::value,//RETURNREALstd::uniform_real_distribution,void>>>Numberrandom(Numbermin,Numbermax){staticstd::random_devic

C++ 构造函数 : Initialize local variable before initializer list

如何在构造函数中(在堆栈上)存储初始化列表所需的临时状态?例如,实现这个构造函数……//configabstraction.h#includeclassConfigAbstraction{public:ConfigAbstraction(std::istream&input);private:intm_x;intm_y;intm_z;};...使用这样的有状态助手类?//mysillyparserdontworry.h#include//jsoncppclassMySillyParserDontWorry{public:MySillyParserDontWorry(std::istre

c++ - 为什么即使使用指定的 std::launch::async 标志,std::async 也会同步调用该函数

我传递给std::async的函数打印当前线程ID。尽管使用std::launch::async标志调用,它仍打印相同的theadid。这意味着它同步调用该函数。为什么?voidPrintThreadId(){std::cout输出是:2093620936209362093620936环境:VS2015,W7。提前致谢! 最佳答案 您实际上通过等待每个调用来序列化调用,因此可以重复使用同一个线程而不会破坏std::future由不同于调用者线程当以下代码显示与其他代码相同的CallerThreadId时,请唤醒我们:voidPrin

c++ - if constexpr(condition) 作为编译时条件

我想使用constexprbool(下例中的useF)来启用以下代码中的功能。在这里,调用A::f()。此外,我想将别名模板(a)设为void,以防我关闭该功能。我尝试使用constexprif语句,但主体仍在实例化,这导致编译错误。如果我使用包装器模板(X),正文将按照我的预期被丢弃,但这对我来说似乎很难看。还有其他方法吗?constexprbooluseF=false;structA{staticvoidf(){}};usinga=std::conditional::type;templatestructX{staticvoidh(){ifconstexpr(std::is_sam

c++ - boost async_write 问题

我将展示一些代码;voidwh(constboost::system::error_code&ec,std::size_tbytes_transferred){std::cout当我使用该代码时出现内存泄漏,我发现一些代码(如minicom_client教程)甚至从该代码中变得复杂,而且我在minicom_client上出现内存泄漏。如果我使用boost::asio::write(pSerial,boost::asio::buffer("A",1));代替async_write效果很好,你能解释一下那里发生了什么吗,非常感谢...... 最佳答案