繁体   English   中英

在Windows OS中,如何将数据从OpenCV或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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM