草庐IT

BOOST_PP_SEQ_FOLD_LEFT

全部标签

c++ - 如何使用 boost::statecart 在固定数量的线程上多路复用多个异步状态机?

假设我有许多用boost::statecart定义的异步状态机。运行多个异步状态机的明确记录机制是将其中一个或多个固定到一个线程。但是,出于我的目的,我需要运行很多很多异步状态机,而每个线程一个是行不通的。此外,任何给定状态机完成的工作量是不可预测的,因此将状态机分配给固定线程会导致不平衡。相反,我想要一个线程池,空闲线程可以在其中从队列中提取一些工作量。这里需要注意一些事情,以便按顺序将事件传送到给定的状态机。大概开始的地方是涉及实现Scheduler和FifoWorker概念来做我想做的事情,分别作为fifo_scheduler和fifo_worker类的替代方案。但是,我想知道这

Python + setuptools : distributing a pre-compiled shared library with boost. python 绑定(bind)

我有一个C++库(我们在下文中将其称为示例),我使用boost.python库为其编写了Python绑定(bind)。这个Python包装的库将称为pyExample。整个项目是使用CMake构建的,生成的Python包装库是一个名为libpyExample.so的文件。当我使用与libpyExample.so位于同一目录中的Python脚本中的Python绑定(bind)时,我只需编写:importlibpyExamplelibpyExample.hello_world()这会执行包装过程公开的hello_world()函数。我想做什么为了方便起见,我希望我的pyExample库可以

c++ - Boost.Asio - 轮询命名管道

我正在尝试监听命名管道上的输入。我正在使用Boost.Asio的stream_descriptor和async_read在Linux下。问题是,对io_service::run()的调用只会像我希望的那样阻塞,直到第一次读取。在那之后,它只是继续立即调用处理程序并出现“文件结束”错误,即使我尝试向它附加更多async_reads。我的代码等同于以下内容:boost::asio::io_serviceio_service;intfifo_d=open("/tmp/fifo",O_RDONLY);boost::asio::posix::stream_descriptorfifo(io_se

c++ - 为什么 boost::circular_buffer 在我的基准测试中这么慢?

阅读rationale,boost::circular_buffer看起来很有希望:Suitabilityforreal-timeandperformancecriticalapplications.Fastconstant-timeinsertionandremovalofelementsfromthefrontandback.当我运行一个模拟我的用例的简单基准测试时,将其用作字节缓冲区:写一个更大的block读取较小的block直到为空重复性能绝对糟糕,超过4000x比我自己的hack和spsc_queue慢。lin:101//10240xlock:109//10240xcirc:

c++ - 尝试在 cygwin : error: expected unqualified-id before '&&' token 中构建 boost 文件系统时出错

我安装了cygwin2.6和gcc5.4。我安装了boost.build,它似乎可以正常工作。但是,当我尝试构建文件系统模块时,它失败并出现错误:work@PC/lib/boost_1_62_0/libs/filesystem/example/test$./build.shCompilingexampleprograms...tut4.cpp:40:18:error:expectedunqualified-idbefore'&&'tokentut4.cpp:40:18:error:expected';'before'&&'tokentut4.cpp:40:23:error:expect

c++ - 关闭时 Boost 日志中的 Boost 线程访问冲突

我有一个使用boost日志记录的应用程序。在关闭期间,它会在空指针访问时发生访问冲突。当我单步执行代码到失败点时,似乎正在取消分配boost::logdll,然后boost::thread代码尝试访问曾经被日志dll占用的内存。我没有在自己的代码中使用任何boost线程,因此假设boost-threaddll被boostlog使用。为了确保在关闭之前销毁所有接收器,我调用了:core->flush()和core->remove_all_sinks()我使用的是boost1.60,也曾在boost1.63上尝试过。相同的结果。有没有办法确保在退出/卸载dll之前完全关闭boost日志记录

c++ - 同步 boost ASIO : Asynchronous write,

我有一个程序(客户端+服务器)可以正常工作:boost::asio::write(this->socket_,boost::asio::buffer(message.substr(count,length_to_send)));哪里socket_是boost::asio::ssl::stream和message是一个std::string.我想让它变得更好和非阻塞,所以我创建了一个可以替代它的函数,它的调用如下:write_async_sync(socket_,message.substr(count,length_to_send));这个函数的目的是:本质上使调用异步保持界面不变我实

c++ - 使用 boost 预处理实例化模板函数和类

使用看似标准的w,x,y,z演示,假设我有以下宏试图转换为“可迭代”预处理器宏#defineINSTANTIATE_FUNC(rtype,func_name,...)\templatertypefunc_name(__VA_ARGS__);\templatertypefunc_name(__VA_ARGS__);\templatertypefunc_name(__VA_ARGS__);\templatertypefunc_name(__VA_ARGS__);为了完整起见,假设我们正在尝试实例化以下内容structw{staticconstexprintdata=0;};structx{

c++ - boost::write_graphviz - 如何水平生成图形

我正在尝试使用BoostGraphLibrary生成一个显示水平图的.dot。创建图表时我的代码如下所示:structVertexP{std::stringtag;};structEdgeP{std::stringsymbol;};structGraphP{std::stringorientation;};typedefboost::adjacency_listGraph;GraphPproperty;property.orientation="LR";Graphgraph(property);//Thenfillthegraph我用来生成.dot文件的代码是这样的:Graphg=cr

c++ - boost 字符串匹配 DFA

给定一个字符串,我必须测试它是否以一组已知的后缀结尾。现在,由于后缀不是很小,文档中的每个单词都必须根据已知后缀列表进行检查。单词和后缀中的每个字符都是char32_t。作为天真的迭代匹配将是昂贵的。尽管大多数后缀不是子后缀或另一个后缀的前缀,但它们中的大多数是由一小部分字符构成的。大多数检查将是未命中而不是命中。所以我想构建一个后缀的DFA来最小化未命中的成本。我可以手动解析unicode代码点并使用boost-graph创建DFA。但是是否有任何现有的库可以为我构建它?包含所有后缀的巨大正则表达式是否会比DFA更便宜,因为正则表达式搜索也以类似的方式构建用于匹配的DFA?但是我想知