草庐IT

boost-pool

全部标签

c++ - decaf 线程 vs boost 线程 vs omnithreads

我正在考虑将哪个线程库用于必须在x86、x86_64和powerpc架构上运行的相对较小的C++项目。该项目使用ActiveMQ,它提供decaf::lang::Thread和decaf::util::concurrent工具。我没有使用该库的经验,找不到任何教程/示例,只有文档?你们中有人/女孩曾经使用过无咖啡因线程吗?您能告诉我您的体验并与您知道的其他产品做一些比较吗?谢谢,bb 最佳答案 看起来ActiveMQ的decaf::util::concurrent设施非常好,因为它们提供了一些并发容器和线程池设施,但我仍然可能会投票

c++ - boost::date_time (boost-145) 使用带有微秒计算的 64 位 uint,没有截断

我正在使用date_time来抽象掉平台特性。我需要生成一个64位微秒分辨率uint64_t,它将用于序列化。我不明白下面出了什么问题。#include#include#includeusingnamespaceboost::posix_time;usingboost::uint64_t;ptimeUNIX_EPOCH(boost::gregorian::date(1970,1,1));intmain(){ptimecurrent_time=microsec_clock::universal_time();std::cout这是我得到的输出。originaltime:2010-Dec-

c++ - boost POOL 使用率 - 单例

我已经开始使用boost池作为boost/pool/singleton_pool.hpp中定义的单例,因为我需要重复分配许多相同大小的结构。性能boost非常显着,因为我之前使用的是malloc。我分配的对象由生产者线程放入列表中,消费者线程从另一端取出这些对象并释放这些对象。但是当我释放对象时,任务管理器中进程的内存使用量永远不会减少。我猜这是因为池库预分配了一定数量的内存?此外,当生产者的数据速率增加时,总内存使用量似乎以block为单位增加~10k,但即使在为池中的对象调用free之后也不会减少。我想定期做一些内务处理以释放内存块以减少进程的整体内存使用量。这可能吗?我不能使用p

c++ - 我如何强制 boost::asio 优先完成 async_write 调用而不是运行其他处理程序?

我正在使用boost::asio(不经意的传输方案)实现一组简单的协议(protocol)。这些在运行时受CPU限制。为了boost效率,我想尽量让两台主机都工作。如果主机A可以在执行两项任务之间做出选择,其中一项会让主机B开始计算,而另一项则不会,我希望主机A选择前者。目前,io_service在async_writes之前运行计算密集型处理程序。除非tcp窗口已满(或某些类似情况正在阻止向socker写入数据),否则完成async_write比运行其他处理程序几乎肯定更好。我看过asio的处理程序优先级队列示例。重新实现async_write以使用这样的优先级队列是解决我的问题的唯

c++ - boost::asio 在线程中启动不同的服务?

似乎所有示例总是显示在所有线程中运行相同的io_service。可以启动多个io_services吗?这是我想做的:在处理用户输入的主线程中启动io_serviceA...在另一个线程中启动另一个io_serviceB,然后可以启动一堆worker线程都共享io_serviceB。io_serviceA上的用户可以“发布”io_serviceB上的工作,以便它在工作池上完成,但io_serviceA(即主线程)上不会完成任何工作。这可能吗?这有意义吗?谢谢 最佳答案 根据我的经验,如果每个cpu一个io_service或每个进程一个

c++ - 更好地处理 boost::program_options 中丢失/错误的键

有没有办法知道当像下面这样的调用失败时涉及到哪个键?boost::program_options::variables_mapvm;...intfoo_bar=vm["some_key"].as();如果键从映射中丢失,或者不能转换为int,我会得到一个相当无用的bad_any_cast,并且我不知道以下任何内容:涉及的关键储值,或者即使它存在。涉及的类型我找不到任何不涉及修改boostheader或将对上述内容的每次调用包装在try..catchblock中的解决方案。我认为这是一个常见问题,所以也许其他人知道更好的方法。 最佳答案

c++ - 将 Boost.Filesystem 静态链接到共享库时出现问题

我正在使用GCC4.5.2和Boost1.46.1构建一个共享库(使用--build-type=complete编译>)这是来自Makefile的命令,它执行链接部分:$(CXX)-static-lboost_filesystem-fpic-shared$^-o$@一切都可以正常编译,但是当它被应用程序加载时出现以下错误:plugins/crashdetect.so:undefinedsymbol:_ZN5boost11filesystem34path21wchar_t_codecvt_facetEvldd输出:linux-gate.so.1=>(0x002f8000)libstdc+

c++ - boost::visit_each 有什么用?

我读了documentationonvisit_each,但如果每个用户都必须重载它,则无法真正看到它到底做了什么,以及它的一般用途。有大佬赐教吗?编辑:也许我很困惑,因为以下是的全部内容。而且我只是看不到任何“访问每个子对象”的“魔法”:namespaceboost{templateinlinevoidvisit_each(Visitor&visitor,constT&t,long){visitor(t);}templateinlinevoidvisit_each(Visitor&visitor,constT&t){visit_each(visitor,t,0);}}也许有人可以给我

c++ - 是否有用于 Boost::asio 的 Web 框架?

用C++做web开发听起来有点奇怪,但是随着node.js的流行,我认为C++做web的东西是合理的。node.js类似于Boost::asio,它们都是异步的并且具有高性能。我认为C++拥有自己的基于Boost::asio的Web框架是很自然的。那么是否有针对Boost::asio的Web框架,如Express、Geddy?为什么不呢? 最佳答案 有pion,这是一个用C++编写的基于boost::asio的HTTP服务器。您可以将其用作C++Web框架的起点。 关于c++-是否有用于

c++ - Boost Asio 回调不会被调用

我正在使用Boost.Asio进行网络操作,它们必须(实际上,可以,没有复杂的数据结构或任何东西)保持相当低的水平,因为我负担不起序列化开销(和库)我发现确实提供了足够好的性能似乎不适合我的情况)。问题出在我从客户端执行的异步写入(在QT中,但这可能与此处无关)。async_write中指定的回调永远不会被调用,我完全不知道为什么。代码是:voidSpikingMatrixClient::addMatrix(){std::coutui->editNetworkSize->text().toInt();std::ostreamout(&buf);out.write(reinterpret