首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++线程条件信号

c++线程条件信号
EN

Stack Overflow用户
提问于 2013-12-03 11:11:40
回答 1查看 151关注 0票数 1

我正在使用线程在C++中进行多线程处理。我的问题是,我正在使用帧从摄像头执行特征提取。特征提取例程需要大约4-5秒来执行任务。然而,我希望视频流继续,并等待信号从特征提取例程通知发送另一帧。我认为这里有两个函数可供使用,但我不确定它的实现。功能有:pthread_cond_waitpthread_cond_signal.

我的节目大纲如下:

代码语言:javascript
复制
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个实例

EN

回答 1

Stack Overflow用户

发布于 2013-12-03 11:58:40

独立于要使用的库,条件变量的概念是,一个线程在阻塞状态下等待条件的改变,所以它不必轮询它。因为您希望您的流线继续,所以它最好每次轮询条件,所以您只需要一个互斥来同步条件。

所以提取者:

代码语言:javascript
复制
doExtraction(Frame);
mutex.lock();
Ready = true;
mutex.unlock();  // can be avoided with RAII

彩带:

代码语言:javascript
复制
while(true)
{
  doStreaming();
  bool localReady;
  mutex.lock();
  localReady = Ready;
  Ready = false;
  mutex.unlock();
  if (localReady) prepareFrame();
}

您可能需要一个条件变量将框架传递给提取器线程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20349551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档