我遇到了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 ¶m, Images &background, Images &cloud)
{
try{
if(!loadImage(cloud))
return false;
///Then: resize image, compute background mask, segment it.
return true;
catch(...){ return false; }
}
提前谢谢
迈克