草庐IT

pause_test_threads

全部标签

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++ - 使用来自matlab的boost::threads时挂起和/或segfault,而不是直接调用时

问题出在人们有类似问题的情况下:经过与Mathworks支持的一些讨论之后,原来是系统boost和Matlab附带的boost库之间的冲突:当我使用systemboostheader进行编译并与(较旧)的MatlabBoost库,它已分段。当我编译并与系统boost动态链接时,然后它动态加载Matlabboost库时,它将永远挂起。静态链接到系统boost的工作原理,以及为Matlab随附的boost版本下载正确的header并进行编译时也是如此。当然,Mac版本的Matlab的文件名中没有版本号,尽管Linux和据说的Windows版本都有。R2011b使用boost1.44作为引用

c++ - 系统( "pause")导致堆损坏

所以这很奇怪,对此可能有一个非常简单的解释,但我使用的机器我通常不使用出厂默认安装的VS2010进行开发。下面发布的代码正是我正在运行,它导致出现这条熟悉的消息:WindowshastriggeredabreakpointinProjectB.exe.Thismaybeduetoacorruptionoftheheap,whichindicatesabuginProjectB.exeoranyoftheDLLsithasloaded.ThismayalsobeduetotheuserpressingF12whileProjectB.exehasfocus.Theoutputwindow

c++ - 为什么在 C++0x 或 Boost.Thread 中没有针对多个互斥锁的作用域锁?

C++0x线程库或Boost.thread定义非成员变量模板函数,锁定所有锁避免死锁。templatevoidlock(L1&,L2&,L3&...);虽然此功能有助于避免死锁,但标准不包括用于编写异常安全代码的关联作用域锁。{std::lock(l1,l2);//dosomething//unlocklil2exceptionsafe}这意味着我们需要使用其他机制作为try-catchblock来制作异常安全的代码,或者我们自己在多个互斥锁上定义我们自己的作用域锁,甚至这样做{std::lock(l1,l2);std::unique_locklk1(l1,std::adopted);

c++ - 如何用 "-pthread"而不是 "-mthread"编译 boost_thread?

我有一个操作系统,编译时没有可用的-mthread。我有-pthread。如何用-pthread而不是-mthread编译boost_thread?我当前的编译器构建日志:./b2-j1--with-threadlink=static--prefix=./install-dirreleasethreading=multi--builddir=./build-dirinstallComponentconfiguration:-chrono:notbuilding-context:notbuilding-date_time:notbuilding-exception:notbuilding

c++ - 替代 std::this_thread::sleep_for()

我有一个循环,我想确保它在每个循环中运行(大约)固定的时间量。我正在使用sleep_for来实现此行为,但我也希望程序能够在不完全支持标准线程库的环境中编译。现在我有这样的东西:usingnamespacestd;usingnamespacestd::chrono;//while(!quit){steady_clock::time_pointthen=steady_clock::now();//...doloopstuffsteady_clock::time_pointnow=steady_clock::now();#ifdefNOTHREADS//versionforsystemsw

【神行百里】python开启多线程(threading)与多进程(multiprocessing)运行

  由于处理数据过多,程序运行很慢,就学习了一下python开启多线程与多进程的方法,虽然最后也没用上,但还是记录总结一下,以备不时之需。  传送门:进程与线程认识,进程与线程通俗理解  简言之,进程为资源分配的最小单元,线程为程序执行的最小单元1.threading库实现多线程运行  threading库中的Thread类可以方便地开启多线程运行,Thread类需要传入两个参数,target为需要执行的函数,args为函数的参数,本例中自定义的multithreading函数具有三个参数。importthreadingimporttimeimportosdefmultithreading(d

c++ - Boost.Test 应用程序调试

在VS2010(VS2008)中调试C++Boost.Test应用程序时,如何使调试器在Boost.Test断言失败点停止? 最佳答案 我自己还没有尝试过,但理论上你会想在check_implfunction中的某处设置一个断点。(在boost_unit_test_library源代码中),可能在其最终案例陈述的非PASS案例中。在实践中,我总是发现自己只是再次运行测试(或使用--run_test=...选择的特定问题测试),并在有问题的检查上设置断点。请注意,失败的BOOST_REQUIRE会导致抛出,因此,如果您在调试选项中启用

c++ - Thread C++ 成员函数模板可变参数模板

我尝试使用线程调用对象的成员函数。如果函数没有可变参数模板(Args...args),没问题,它可以工作:考虑这两个类:基因引擎templateclassGeneticEngine{templateT*run_while(bool(*f)(constT&),constintsize_enf,Args&...args){std::thread(&GeneticThread::func,islands[0],f,size_enf);/*Somecode*/return/*...*/}private:GeneticThread**islands;}遗传线程templateclassGenet

c++ - 在 C++ 中自动绑定(bind) boost::thread?

做的时候:std::vectorvec;intnumber=4;boost::threadworkerThread(&Method,number,vec)givenamethod:templatevoidMethod(intn,std::vector&vec){//doesstuff}为什么我必须手动做:boost::threadworkerThread(&Method,number,boost::ref(vec))?为什么它不通过引用自动传递它?Edit::理论上boost::thread是否有可能做一些宏元编程来调整它,因为C++没有内置反射/内省(introspection)的方