具有非空函数的多线程
Multi threading with non-void functions
我正在尝试在 C++ 中对我的程序进行多线程处理(我使用 OpenCV 库)
这是代码:
double _find_eyes (Mat img, vector<Rect_<int> > & finalEyes)
{
//some code working on image
return valueOfMatch; //is a double
}
double _find_mouth (Mat img, vector<Rect_<int> > & finalMouth)
{
//some code working on image
return valueOfMatch; //is a double
}
double _find_face ()
{
eyesMatch = _find_eyes(image, eye);
mouthMatch = _find_mouth(image, mouth);
totalMatch = eyesMatch + mouthMatch;
}
int main()
{
find_face();
}
我想使用线程以并行方式找到嘴巴和眼睛。怎么做?我的问题是非空函数和 return 值。
提前致谢。
一种简单的方法是使用 std::async
,例如:
double _find_face ()
{
auto eyesMatch = std::async(std::launch::async, _find_eyes, std::ref(image), std::ref(eye));
auto mouthMatch = std::async(std::launch::async, _find_mouth, std::ref(image), std::ref(mouth));
return eyesMatch.get() + mouthMatch.get();
}
我正在尝试在 C++ 中对我的程序进行多线程处理(我使用 OpenCV 库) 这是代码:
double _find_eyes (Mat img, vector<Rect_<int> > & finalEyes)
{
//some code working on image
return valueOfMatch; //is a double
}
double _find_mouth (Mat img, vector<Rect_<int> > & finalMouth)
{
//some code working on image
return valueOfMatch; //is a double
}
double _find_face ()
{
eyesMatch = _find_eyes(image, eye);
mouthMatch = _find_mouth(image, mouth);
totalMatch = eyesMatch + mouthMatch;
}
int main()
{
find_face();
}
我想使用线程以并行方式找到嘴巴和眼睛。怎么做?我的问题是非空函数和 return 值。 提前致谢。
一种简单的方法是使用 std::async
,例如:
double _find_face ()
{
auto eyesMatch = std::async(std::launch::async, _find_eyes, std::ref(image), std::ref(eye));
auto mouthMatch = std::async(std::launch::async, _find_mouth, std::ref(image), std::ref(mouth));
return eyesMatch.get() + mouthMatch.get();
}