首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

线程的循环有关问题

2013-11-23 
线程的循环问题本人linux小白新手最近在做一个关于视频传输的项目希望能完成一个从摄像头采集,UDP协议传输

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

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

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

可能表达有点问题,见谅,大家就将就着看看吧,谢谢了 线程?Qt??循环
[解决办法]
根据你的应用,移使用信号量的方法来唤醒线程抓图发送,

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

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


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

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

热点排行