我正在使用线程在C++中进行多线程处理。我的问题是,我正在使用帧从摄像头执行特征提取。特征提取例程需要大约4-5秒来执行任务。然而,我希望视频流继续,并等待信号从特征提取例程通知发送另一帧。我认为这里有两个函数可供使用,但我不确定它的实现。功能有:pthread_cond_wait和pthread_cond_signal.
我的节目大纲如下:
void *makefeature(void * arg){
// compute future using surf
//HERE I WANT TO SIGNAL TO THE MAIN THAT I AM DONE SEND A NEW FRAME NOW
}
int main(){
// All video streaming functions and all
pthread_create(); //! call to make feature routine
}如何实现pthread_cond_wait和pthread_cond_signal.Please帮助的2个实例
发布于 2013-12-03 11:58:40
独立于要使用的库,条件变量的概念是,一个线程在阻塞状态下等待条件的改变,所以它不必轮询它。因为您希望您的流线继续,所以它最好每次轮询条件,所以您只需要一个互斥来同步条件。
所以提取者:
doExtraction(Frame);
mutex.lock();
Ready = true;
mutex.unlock(); // can be avoided with RAII彩带:
while(true)
{
doStreaming();
bool localReady;
mutex.lock();
localReady = Ready;
Ready = false;
mutex.unlock();
if (localReady) prepareFrame();
}您可能需要一个条件变量将框架传递给提取器线程。
https://stackoverflow.com/questions/20349551
复制相似问题