草庐IT

boost-pool

全部标签

c++ - Boost 序列化/反序列化存档 "stream error"异常

我有以下问题..我有一个名为A.h的文件和一个名为B.h的文件。每个都包含这样的结构:(两个类中的结构不同)structBase{friendclassaccess;templatevoidserialize(Archive&ar,constunsignedintversion){ar&fieldLength;ar&fieldMD;ar&fieldTime_Stamp;}public:unsignedintfieldLength;unsignedintfieldMD;unsignedintfieldTime_Stamp;virtualvoidf(){}//tobepolymorphic

c++ - 使用 boost phoenix,如何调用带有 starts_with 的 find_if 调用?

我正在尝试在结构vector中查找元素。该代码在以区分大小写的方式进行搜索时有效。当我尝试将其boost为不区分大小写时,我遇到了两个问题。简单地包含boost/algorithm/string.hpp会破坏以前工作的VS2010构建。错误是“'boost::phoenix::bind':对重载函数的模糊调用”。在Xcode中构建正常。有什么方法可以消除绑定(bind)的歧义?我想我在第二个(注释掉的)find_if行中有语法错误,添加了istarts_with调用。我从phoenixheader中收到错误消息“错误:没有名为‘type’的类型”。假设问题#1可以解决,我应该如何更正此

Golang中Sync.Pool详解及使用方法

什么是sync.Pool?sync.Pool是用来保存可以被重复使用的临时对象,以便在以后的同类操作中可以重复使用,从而避免了反复创建和销毁临时对象带来的消耗以及对GC造成的压力。常用池化技术来提高程序的性能,例如连接池、线程池等。sync.Pool是并发安全的,可以在多个goroutine中并发调用sync.Pool存取对象。在Golang的很多标准库和很多知名的开源库中,都可以看到大量使用sync.Pool的场景。例如encoding/json包中的Valid方法使用sync.Pool创建scanner对象,Gin框架使用sync.Pool来复用每个请求都会创建的gin.Context对象

c++ - boost filesystem::path 构造函数 std::length_error

我正在尝试使用Boost.Filesystem库遍历目录。问题是当我尝试实例化一个路径对象时,我得到一个std::length_error消息“stringtoolong”和任何长度的字符串,例如“pippo”。我已经尝试了所有这些:strings="pippo";pathp(s);pathp(s.begin(),s.end());pathp(s.c_str());pathp("pippo");我在Windows7上使用boost预编译版本1.47forvc++10。先谢谢你,卢卡编辑这是执行的boost代码(path.hpp第129行)templatepath(Sourceconst

c++ - 如何使用 boost::signals2 存储和转发槽?

我有一个问题,我必须实例化对象的实例比我想做的要早,因为我需要连接信号通过一些深刻的所有权,我想提出一种方法存储和转发插槽,以便我可以更近地构建对象到他们的使用站点,而不是作为成员变量。我的基本问题是我有一个将下载更新的进程在一个单独的线程上归档并向任何正在处理的人发送进度信号感兴趣的。信号本质上是:typedefboost::signals2::signalDownloadProgress;假设提到的progress函数的实现下面符合这个;信号本身的性质不是很重要(尽管我大部分时间都在使用仿函数)。信号已设置,代码如下所示:Updaterupdater;updater.onDownl

c++ - 为什么 `boost::multi_array_ref` 的析构函数是非虚拟的?

const_multi_array_ref、multi_array_ref和multi_array之间的关系如下:multi_array_ref派生自const_multi_array_refmulti_array派生自multi_arry_ref但是,const_multi_array_ref和multi_array_ref的析构函数是非虚拟的。事实上,它们没有明确实现的析构函数。只有multi_array有一个。这是否意味着不推荐以下用法?multi_array_ref*=newmulti_array(extents[3][3]);如果是,为什么? 最佳

c++ - 为什么 intrusive_ptr 和 shared_ptr 不能与 boost::intrusive 容器一起使用?

boost::intrusive文档描述了如何youcanusesmartpointerswithintrusivecontainers但接着说你不能使用你最有可能使用的智能指针,“它必须具有与原始指针相同的所有权语义。这意味着资源管理智能指针(如boost::shared_ptr)不能被使用。”这是为什么?我想不出任何明显的理由应该禁止它们。究竟什么会破坏?无论如何,侵入式容器不会管理其中元素的分配。就我而言,我想使用intrusive_ptr,但我看不出shared_ptr也不能工作的任何原因。编辑:明确地说,我的意思是Hook指针(例如侵入式单链表中的下一个指针)是一个智能指针。

c++ - 如何将 boost::shared_ptr<T> 后面的完整对象深度复制到指向新位置的 shared_ptr?

如何在boost::shared_ptr后面复制完整对象:是否有memcopy选项(只创建内存克隆),或者我们应该创建复制构造函数? 最佳答案 您需要一个复制构造函数或一个将执行深复制的operator=。boost::shared_ptr无法知道您的对象的结构来为您执行此操作。“内存克隆”操作也不能。当然,这仅适用于需要明确定义的复制构造函数/operator=的对象,而“普通”的对象会进行浅拷贝。 关于c++-如何将boost::shared_ptr后面的完整对象深度复制到指向新位置

c++ - boost 正则表达式链接 : Can't find library

我在链接BoostRegex时遇到问题,尽管我可以运行(编译/链接)其他Boost程序。我意识到这是“有据可查的”,但我找不到答案,因为各种帖子使用不同版本的Boost、不同的编译器、使用bjam(我使用b2),似乎暗示了我已经尝试过的东西等。设置VisualStudio10(我使用的是C++)boost版本:1.53.0初始安装:我关注了HowtouseBoostinVisualStudio2010(我走到了第二点4)。我没有下载正则表达式的ICU支持,因为我认为只有在需要Unicode支持时才需要它?我已通过更新“包含目录”并添加C:......\Boost\boost_1_53_

c++ - 未调用 boost SSL async_shutdown 完成处理程序

我将boost1.54.0与OpenSSL1.0.1e结合使用。不时关闭SSL连接对象时,我会看到async_shutdown()的完成处理程序不被调用。调试后我发现,当存在超出async_write()时会发生这种情况。SSLasync_shutdown()应该发送SSLAlert(Closing),因此我们这里有2次写入。我知道多个async_write()是被禁止的。我应该如何处理这种情况?我应该在调用SSLasync_shutdown()之前等待async_write()完成吗?编辑:根据this我可能需要在底层TCP套接字上使用cancel()来取消所有未完成的异步操作。是否