草庐IT

boost_thread

全部标签

c++ - 从 Boost 迁移到 C++11 的标准库

我是boost库的新用户。出于多种原因,我发现自己更多地考虑采用boost。据我所知,boost库似乎是一种skunkworks沙箱,在被C++委员会采纳之前尝试了各种用于即将到来的标准化的C++TR功能——想想boost::filesystem和boost::regex,例如,我在visualstudio中通过#includeheader尝试了一些C++11正则表达式功能-在我移植到目标powerpc平台之前效果很好,该平台当时使用了CodeSourcery的GCC4.7.3.不幸的是,我意识到在运行时,许多正则表达式实现是不完整的或空的(甚至认为它已编译)——通过一些功课,我应该事

c++ - clang 不喜欢 boost::signals2?

一整天,我一直在使用Boost::Signals2库从部分代码中获取编译器错误。我已经将我想要做的事情简化为一个最小的例子:#includeintfoo();structfirst_nonzero{usingresult_type=int;templateresult_typeoperator()(Itfirst,Itlast)const{while(first!=last){if(*first!=0){return*first;}}return0;}};intfoo(){usingsignal=boost::signals2::signal;signals;returns();}当我

c++ - C++ 程序末尾的 thread_local vector 段错误

我正在尝试制作一个多线程程序,但在线程局部vector方面遇到了一个奇怪的问题。这是(精简到只有错误)代码:#include#includethread_localstd::vectorvec;intmain(){vec.push_back(3);std::cout程序编译正常,运行基本正常,但在我按回车键后,我收到“程序已停止工作”消息。我在gdb中运行它并得到了这个错误:ProgramreceivedsignalSIGSEGV,Segmentationfault.0x004030b0instd::vector>::~vector()()不知何故,vector的析构函数中存在错误。使

c++ - 使用 boost::successive_shortest_path_nonnegative_weights 的最小成本最大流

我需要使用计算流量网络的最小成本最大流量boost::successive_shortest_path_nonnegative_weights()BGL(v1_60_0)中可用的函数。如documentation中所述,thedirectedgraphG=(V,E)thatrepresentsthenetworkmustbeaugmentedtoincludethereverseedgeforeveryedgeinE.Thatis,theinputgraphshouldbeGin=(V,{EUET}).[...]TheCapacityEdgeMapargumentcapmustmape

c++ - boost 消息队列线程安全和进程安全吗?

我正在尝试使用boost::interprocess::message_queue将消息从一个进程发送到另一个进程并完成发送者代码。我想知道这个消息队列是否是进程安全的,但没有找到任何关于它的官方公告,而在stackoverflow社区的相关问题中,只有关于boost::interprocess中的共享资源是线程安全的,其中没有提到message_queue。提前致谢。 最佳答案 正如iamnoten所提到的,是的,它是线程/进程安全的。问题已关闭。 关于c++-boost消息队列线程安

c++ - std::condition_variable::wait_until 相对于 std::this_thread::sleep_for 有什么优势吗?

在时间等待场景中:oursoftwareworksinthebackground,andsynchronizesdatawiththeserverinevery20-30minutes.我想用std::this_thread::sleep_for但我的上级强烈反对任何形式的sleep功能。他推荐std::condition_variable::wait_until(lock,timeout-time,pred)不知道在这种情况下sleep_for有什么缺点吗? 最佳答案 正如评论中已经指出的那样,这仅取决于您的用例。两者之间的主要区

c++ - Boost、共享内存和 vector

我需要在进程之间共享一堆字符串(将来可能是更复杂的对象)。我决定使用boost::interprocess但我无法让它工作。我敢肯定这是因为我不明白的东西。我以他们为榜样,但如果有使用该库经验的人可以查看我的代码并告诉我哪里出了问题,我将不胜感激。问题是它似乎有效,但经过几次迭代后,我在读取器进程和有时在写入器进程上都遇到了各种异常。这是我的实现的简化版本:usingnamespaceboost::interprocess;classSharedMemoryWrapper{public:SharedMemoryWrapper(conststd::string&name,boolserv

c++ - boost::bind 不能与条件表达式一起使用?

当我取消注释条件表达式时,程序将无法在visualc++2008下编译。#include#include#includetypedefboost::functionvii_t;typedefboost::functionvi_t;voidfoo(inta,intb){}voidbar(inta){}intmain(intargc,char*argv[]){//vi_ttest=true?boost::bind(foo,_1,100):boost::bind(bar,_1);vi_ttest1=boost::bind(foo,_1,100);vi_ttest2=boost::bind(b

c++ - 调试boost::thread应用,误报率高

我编写了一个boost::thread应用程序,其中可能存在一些竞争条件。我想调试这个程序。因此,我使用了以下valgrind工具:哈尔格林德博士不幸的是,他们的误报率非常高。因此,使用下面的非常简单的程序valgrind--tool=drd会提示94个错误,而本不该出现的错误。因此,在我的复杂程序中,我得到了大约15000个错误。所以很难找到真正的错误。我可以使用以下boost库1.46.0和1.47.0重现此行为。以及valgrind3.7.0SVN和valgrind3.8.0SVN。我试用的操作系统是Ubuntu11.10和MacOSX10.7。gcc4.2.1和gcc4.6.1

c++ - vector (反)序列化与 Boost.serialization 的向后兼容性

抱歉交叉发布。在发布到邮件列表boost-users并且一周没有任何回复后,我倾向于在stackoverflow上发布问题。原始帖子,稍作重新编辑:嗨名单,我正在从Boostv1.35迁移到新版本。然而,我有一些我希望新版本可读的遗留序列化字符串。经过一些测试,我发现显然是较新的版本(在这个案例1.40以及更高版本)无法从1.35正确反序列化std::vector实例生成的字符串。谁能给我一个关于可能是什么的指针问题在这里?非常感谢!埃瓦尔德==详情==我使用文本存档和gcc版本4.4.1(Ubuntu4.4.1-4ubuntu9)测试vector是一个包含2项的结构,长整数1和2。各