草庐IT

boost-pool

全部标签

c++ - Boost asio - 同时阅读和写作

我正在尝试使用boost:asio实现双向通信。我正在编写将与多个客户端通信的服务器。我希望在没有任何同步和顺序的情况下对客户端进行写入和读取-客户端可以随时向服务器发送命令,并且它仍然会循环接收一些数据。当然,必须保护对共享资源的访问。实现此目标的最佳方法是什么?有两个线程-一个用于阅读,一个用于编写一个好的选择吗?接受连接并管理许多客户端怎么样?//编辑“无同步和顺序”我的意思是服务器应该一直向客户端传输数据,并且它可以随时响应(更改其行为)客户端请求,而不管现在发送给他们的是什么. 最佳答案 asio背后的一个关键思想就是您不

c++ - boost C++ 单元测试代码覆盖率 TeamCity

请原谅这似乎是一个新手问题。我在网上搜索了一段时间没有结果。是否可以使用BoostC++单元测试框架在TeamCity上获得代码覆盖率,以及如何在Teamcity中考虑这一因素。 最佳答案 Google建议Boost不提供代码覆盖率。相反,人们通常使用lcov生成覆盖率统计信息(seealso)。lcov的一个重要特性是您可以generateanHTML-formattedreport它的代码覆盖统计数据。令我们高兴的是,TeamCity默认配置为在您的构建历史记录中创建一个“报告”选项卡,其中包含一个“代码覆盖率”部分。(您可以通

c++ - BOOST ASIO 加载带有密码的 key.pem

目前我正在处理这个:...ctx.use_certificate_chain_file("./C/cert.pem");ctx.use_private_key_file("./C/key.pem",boost::asio::ssl::context::pem);ctx.load_verify_file("./C/ca.pem");...到目前为止一切正常,但我真正需要做的是加载相同的key.pem但带有密码,查看asio文档发现ssl::context::set_password_callback根据信息调用SSL_CTX_set_default_passwd_cb并允许处理加密的PE

c++ - 限制 boost::odeint 集成中的步骤数

假设我有以下boost::odeint代码:#include#include#includeusingnamespacestd;usingnamespaceboost::numeric::odeint;constdoublesigma=10.0;constdoubleR=28.0;constdoubleb=8.0/3.0;typedefboost::arraystate_type;voidlorenz(conststate_type&x,state_type&dxdt,doublet){dxdt[0]=sigma*(x[1]-x[0]);dxdt[1]=R*x[0]-x[1]-x[0]

c++ - Boost::spirit::qi 定义一个 nullaries 的计算器

我正在尝试为数学表达式编写一个解析器,其中命名变量是boost::spirit中的nullaries|(版本1_51_0),我是全新的。我定义typedefboost::functionValue我的规则将这样声明:qi::ruleexpression,term,others,...;我用这个宏在nullaries上定义二元运算符#defineBINARY_FUNCTOR(name,op)\structname\{\name(Valuex,Valuey):x_(x),y_(y){}\doubleoperator()(){returnx_()opy_();}\Valuex_,y_;\};

c++ - 澄清 "object pool"模式?

我的印象是,对象池是一种设计模式,用于管理一组预先分配的对象,客户端可以向这些对象请求并返回其中一个对象。但是,boost.pool的object_pool类似乎与低级内存管理有关,而不是对象管理。他们为什么使用这个名称,而不是像memory_pool这样的名称?我是不是误以为boost的对象池真的是一个内存池方案?或者它们本质上是一样的?另外,为什么没有更高级别对象池模式的标准实现? 最佳答案 在更彻底地阅读了boost.pool文档之后,我想我理解了我的困惑。我习惯于将对象池实现为分配和管理一组直接对象的类。考虑一下,templ

c++ - 构建 boost C++ WinCE

我知道这是类似的问题,但对我没有帮助。我想在x86平台上为WindowsCE6构建boost。我已经成功构建了STLPortRelease模式作为WINCE的共享库,我还添加了一些补丁并集成了OpenCETime库并实现了一些缺失的ANSIC函数。STLPort测试没问题(只是wcout、wcin和wcerrin_avail()函数的问题,我不知Prop体问题出在哪里)。为了构建boost,我创建了一个批处理文件并以这种方式更改了user-config.jam。构建没问题,但似乎我正在为我的WindowsXp平台而不是WinCE进行编译。boost构建系统非常复杂,我不明白它是如何工作

c++ - 如何写入 boost::asio::mutable_buffer?

我有一些代码为我提供了一个指向缓冲区的指针,以及我需要用数据填充的缓冲区的大小。我用boost::asio::mutable_buffer实例表示这个缓冲区,但是我如何正确使用这个缓冲区(例如,向它写入一个字符串,...)并让boost强制执行缓冲区边界?这是一些伪代码:size_tsome_callback(void*ptr,size_t){//thisfunctioniscalledby3rdpartyreturnour_handler(boost::asio::mutable_buffer(ptr,size));}size_tour_handler(constboost::asi

c++ - boost::any 违反了 Liskov 替换原则

我发现不可能从boost::any中提取对基类型的引用它持有派生类型:boost::anyholder=Derived();constBase&base_ref=boost::any_cast(holder);抛出一个boost::bad_any_cast异常。这似乎违反了Liskovsubstitutionprinciple而且不是很方便。有任何解决方法吗? 最佳答案 我不认为它“违反”了它-boost::any并非专为您的使用而设计。它专门设计用于处理值类型(请参阅文档,您已经向其发布了链接)。您必须将any_cast准确转换为

c++ - Boost Log - 为什么不编译?

在过去的三个小时里,我一直被以下编译错误搞糊涂了。谁能告诉我这是怎么回事?我试图将log::formatter(在下面标记)定义为它自己的变量,因此它可以在几个地方重新使用。但是,在尝试重新使用它时出现编译错误。但是,如果我完全摆脱那个变量,而是复制并粘贴代码,它就会编译。有没有搞错?有什么办法可以做我想做的事吗?boost::shared_ptrlogger=log::core::get();logger->set_logging_enabled(enabled);logger->set_filter(trivial::severity>=level);logger->add_glo