程序崩溃在boost :: thread_group上

时间:2014-01-29 09:12:16

标签: c++ multithreading boost

我遇到了boost :: thread_group的问题。 我的软件对从多个摄像头获取的图像执行一些图像处理,到目前为止,单线程/串行执行操作已成功完成,我使用google-test框架测试了所有单个功能,只是为了避免某些功能的可能性代码错误或算法崩溃。

当我启用多线程处理时,我用不同的数据提供我的处理函数(数据不在线程之间共享,但我想并行处理4个图像,以加快执行),我收到后而分段错误的错误和程序退出。所有try / catch块都没有避免这种崩溃。

是否有任何提示/方法可以并行处理不同的数据并将它们存储在磁盘上?

我会写下导致错误的代码片段:

boost::thread_group processingThreads;
for(unsigned int i = 0; i < images.size(); ++i)
{
     processingThreads.create_thread(boost::bind(processingFunction, i, param, backgrounds[i][0], images[i][0])); 
}
processingThreads.join_all();

其中图像和背景是std :: vector&gt; (每个摄像头一个矢量)。 如何处理相同函数的并行执行? Boost是否适合这个目标?

修改

processingFunction的结构如下(很快,因为它是一个很长的函数)

bool processingThread(const unsigned int threadID, const ProjectConfiguration &param, Images &background, Images &cloud)
{
    try{
           if(!loadImage(cloud))
           return false;

           ///Then: resize image, compute background mask, segment it.
           return true;
    catch(...){  return false; }
}

提前谢谢

迈克

0 个答案:

没有答案