草庐IT

BOOST-ASIO

全部标签

c++ - 为什么不是所有的 Boost 库都只有 header ?

为什么Boost中的所有库都不是仅header?换一种说法,是什么让.lib/.dll的使用成为强制性的?是不是当一个类不能是模板或者有静态字段的时候? 最佳答案 不同点,我猜。二进制大小。仅header会给客户端带来大小负担吗?编译时间。仅header是否意味着编译性能显着下降?运行时性能。仅header能否提供卓越的性能?限制。设计是否只需要标题?关于二进制大小。还有一点安全感如果boost库中有很多可访问的代码,或者编译器无法争论客户端是否可以访问的代码,则必须将其放入最终的二进制文件中。(*)在具有包管理(例如基于RPM或.

C++ "Named Parameter Idiom"与 Boost::Parameter 库

我已经查看了NamedParameterIdiom和Boost::Parameterlibrary.每个人都比另一个人有什么优势?是否有充分的理由总是选择一个而不是另一个,或者在某些情况下它们中的每一个都比另一个更好(如果是,在什么情况下)? 最佳答案 实现命名参数习语真的很简单,几乎和使用Boost::Parameter一样简单,所以它可以归结为一个要点。-你已经有boost依赖了吗?如果你不这样做,Boost::parameter就不够特别,不值得添加依赖项。就我个人而言,我从未在生产代码中看到过Boost::parameter

c++ - 当 boost::asio::io_service 运行方法阻塞/解除阻塞时感到困惑

作为Boost.Asio的初学者,我对io_service::run()感到困惑.如果有人可以向我解释此方法何时阻止/解除阻止,我将不胜感激。文件指出:Therun()functionblocksuntilallworkhasfinishedandtherearenomorehandlerstobedispatched,oruntiltheio_servicehasbeenstopped.Multiplethreadsmaycalltherun()functiontosetupapoolofthreadsfromwhichtheio_servicemayexecutehandlers.

c++ - boost::algorithm::join 的一个很好的例子

我最近想用boost::algorithm::join但是我找不到任何使用示例,我不想花很多时间学习BoostRange库只是为了使用这个功能。谁能提供一个很好的例子来说明如何在字符串容器上使用连接?谢谢。 最佳答案 #include#include#includeintmain(){std::vectorlist;list.push_back("Hello");list.push_back("World!");std::stringjoined=boost::algorithm::join(list,",");std::cout输

Windows 提升 asio : 10061 in async_receive_from on on async_send_to

我有一个相当大的应用程序,可以在Linux上正常运行。我最近使用VC2012和boostasio1.52在Windows7上编译它并遇到了一个奇怪的问题:async_receive_from后跟async_send_to在同一UDP套接字上导致读取完成处理程序被调用boost::system::error_code10061:Noconnectioncouldbemadebecausethetargetmachineactivelyrefusedit如果发送目的地是本地主机上的另一个端口。如果将数据包发送到另一台机器,则不会调用读取完成处理程序。在读取完成处理程序之后,写入完成处理程序

c++ - 如何使用 boost.process 重定向标准输入和标准输出

我正在尝试重定向子进程的标准输入和标准输出。想用缓冲区中的二进制数据填充进程的标准输入并读取它,(但现在我只需要知道有多少写入标准输出)namespacebp=boost::process;bp::opstreamin;bp::ipstreamout;bp::childc(Cmd.c_str(),bp::std_out>out,bp::std_in写入看起来是成功的,但是程序卡在了reading-while循环中,进程(子进程和父进程)在此期间保持空闲状态 最佳答案 工作代码,看起来我必须关闭内部管道来设置child的标准输入eof

c++ - 使用 C++ 异常时 Windows 上可能的最小堆栈大小(使用 boost context fibers)

我正在使用boostcontext1.67创建纤程(fcontextAPI)在Windows10上使用尽可能小的堆栈大小。可能这个问题不仅特定于boost上下文,而且适用于我们使用具有最小堆栈大小的Windows线程的任何场景。我在使用非常小的堆栈(低于10kb)时遇到问题通过由内部引起的stackoverflow异常boost上下文抛出的stackunwind异常如下所示:当使用更大的堆栈(>10kb)时,我没有遇到任何问题。对于复制,以下示例就足够了:#include#include#include#defineSTACK_SIZE8000structmy_allocator{bo

php - 使用 SWIG 在 PHP 中包装 boost::shared_ptr

如果我使用SWIG包装这个C++函数:boost::shared_ptrClient::create(){returnboost::shared_ptr(newClient());}然后在PHP中调用它:$client=Client::create();echogettype($client);$client的类型是resource,不是object,所以我不能调用Client方法。包装此功能的选项有哪些?我正在为其他人的C++库创建一个PHP包装器,因此重新编写代码以不使用boost::shared_ptr并不是一个真正的选择。这是迄今为止我想出的唯一解决方案:MyClientCli

python - 比较 Boost.Odeint 与 Scipy.integrate.odeint?

我最近偶然发现了boost.odeint库,我对可能性和可配置性的数量感到惊讶。但是,在广泛使用scipy.integrate.odeint(它本质上是Fortran中ODEPACK的包装器)之后,我想知道它们的性能如何比较。我知道boost.odeint还带有并行化,这对于scipy(据我所知)是不可能的,这会大大boost性能,但我要求的是单核案例。但是,由于在那种情况下我必须将boost.odeint(使用cython或boost.python)包装到python中,也许你们中有人已经这样做了?这将是一个伟大的成就,因为所有的分析可能性在Python中都更加先进。

c++ - 添加 #include <boost/asio.hpp> 导致 "has different size"问题

在编写(到目前为止)非常简单的C++应用程序时(实际上我刚刚开始将我们的应用程序从Qt迁移出来并主要通过boost替换它的功能)我遇到了如下“常见”错误:(pathtrimmed)\libboost_system.a(error_code.o):duplicatesection.rdata$_ZTSN5boost12noncopyable_11noncopyableE[__ZTSN5boost12noncopyable_11noncopyableE]'hasdifferentsize(pathtrimmed)\libboost_filesystem.a(codecvt_error_ca