Boost thread_group返回空Matrix(openCV)

时间:2014-03-03 09:42:48

标签: c++ multithreading opencv boost matrix

我正在尝试使用boost库中的thread_group来操作openCV库中的矩阵对象(该程序是用C ++编写的)。 但是,当我再次加入主线程后尝试保存矩阵时,矩阵不包含任何数据。 任何人都可以提供一个如何使用boost thread_group操纵矩阵的示例吗? (我真的需要多线程,因为计算需要几天时间)

这是我到目前为止使用的代码:

Mat myMatrix;
// Start threads
boost::thread_group threadGroup;
threadGroup.create_thread(boost::bind(&manipulateMatrixFunction,myMatrix));
threadGroup.join_all();

矩阵仅在主线程中声明。具有行数,列数和数据类型的初始化发生在“manipulateMatrixFunction”内。 (也许这是问题的一部分?)

1 个答案:

答案 0 :(得分:1)

通过引用传递Mat实例:

#include <boost/ref.hpp>

//...
threadGroup.create_thread(boost::bind(&manipulateMatrixFunction,boost::ref(myMatrix)));
//...

但请确保此实例比线程更长。