欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

线程的循环有关问题

更新时间: 2014-01-05 02:43:57 责任编辑: Author_N1

 

线程的循环问题
本人linux小白新手
最近在做一个关于视频传输的项目
希望能完成一个从摄像头采集,UDP协议传输,QT显示这样的功能。
但是卡在了发送接受图片这

我的想法是用线程
发送端循环发送:
void func()
{
  while(function)
  {
    catch();  //抓图并发送的函数
    usleep(30); //等待30us然后抓图
  }
}
int shipin_close()
{
function = 0; 
}

而接收端直接循环接收
但是这样的方法会导致视频很卡,后来是问老师,他回答线程最好不要加死循环,我想问一下各位大神,可否用定时器做?用定时器的话,不也要加循环吗?
我需要实现按一个键开始抓图发送,再按另一个键停止,请问有没有好的方案?

可能表达有点问题,见谅,大家就将就着看看吧,谢谢了
--参考方法--
根据你的应用,移使用信号量的方法来唤醒线程抓图发送,

当你按键要发送时,发送一个信号量,然后,线程收到信号量,启动发送。这样就不需要一直死循环处理了。

接收端也可以用信号量的方式接收,(当接收到图像时,向接收线程发送一个信号量)


使用定时器轮询,和循环轮询,这样会很耗cpu时间,实际上大部分时间,cpu都在做无用功,因为你的按键是间隙性触发的。

如果你想要采样循环处理的方式,最好将sleep时间设为200ms,这样应该不会感觉卡,

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:43:57
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13684/
本文WWW.DOC100.NET DOC100.NET版权所有。