![](/img/trans.png)
[英]How to return value from the thread back to main function without using blocking function in C++/C
[英]How to return data from OpenCV or C++ Thread function to main thread in case of windows os?
我对openCV或C ++线程不太熟悉。
主要问题是我正在将一些数据传递给线程函数,它进行了一些处理,然后需要重新发送处理的数据。
在Win 32或VC ++中,如果是UI线程,我们可以通过一条消息将消息发布/发布到主线程中,但对于辅助线程,则无法返回数据。
在openCV或C ++线程情况下,如何将返回数据发送到主线程呢? 能否请您告诉我如何执行此操作。
我正在使用的代码如下
// .h file
#define MAX_THREADS 3
#include "windows.h"
typedef struct MyData {
unsigned char* colorPixelData;
uint32* punTIFFImageData;
int ii;
int jj;
int hh;
int ww;
int nWidth;
int kk;
} MYDATA, *PMYDATA;
void MyThreadFunction(void *arg);
和
// .cpp file, Main thread
PMYDATA pDataArray[MAX_THREADS];
PMYDATA pReturnedDataArray[MAX_THREADS];
HANDLE hThreadArray[MAX_THREADS];
//some code
hThreadArray[count] = CreateThread(
NULL,
0,
(LPTHREAD_START_ROUTINE)MyThreadFunction,
(void *)&pDataArray[count], // argument to thread function
0,
NULL);
WaitForMultipleObjects(MAX_THREADS, hThreadArray, TRUE, INFINITE);
//called thread function
void MyThreadFunction(void *arg)
{
//NEED TO RETURN DATA FROM HERE TO MAIN THREAD pReturnedDataArray
}
请改用全局变量,以便其他线程可以对其进行读/写。
通过这样做,您不必担心线程“返回某些东西”。
您可以使用C ++ 11标准支持的std::thread
。 然后,您可以根据需要传递pDataArray[count]
和其他许多变量,因此您无需返回任何内容即可获取输出。 您可以在此处获取有关此类的更多信息: http : //www.cplusplus.com/reference/thread/thread/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.