我想创建一些简单的东西,比如void函数(struct str)来计算障碍同步中的平行度,但似乎不是那么简单,所以我遵循了以下内容:https://docs.microsoft.com/en-us/windows/win32/procthread/creating-threads和其他一些主题,但没有成功。找不到解决办法。代码都在一个文件中。
有什么建议如何修理它吗?让它发挥作用?
请注意,当您将lpparam
强制转换为dectectordata*
时,您应该这样强制转换:(detectorData*)lpparam
而不是(detectorData)lpparam
。(请注意*
表示指针。)
由于我使用的是C++,所以已经有了std::thread类。所以我的简单任务可以通过以下代码完成:
void detAndComputeT(detectorData &data) {
Ptr<SIFT> detector = cv::SIFT::create();
detector->detectAndCompute(data.image, Mat(), data.keypoints, data.descriptors);
}
而且
std::thread threads2[2];
detectorData dataImage1;
detectorData dataImage2;
dataImage1.image = image1_toCalc;
dataImage2.image = image2_toCalc;
threads2[0] = thread(detAndComputeT, std::ref(dataImage1));
threads2[1] = thread(detAndComputeT, std::ref(dataImage2));
threads2[0].join();
threads2[1].join();