24小时热门版块排行榜    

查看: 312  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

speed9393

铜虫 (小有名气)

[求助] linux线程编程问题

有AB两个线程,A线程负责获取视频移动侦测,B线程负责视频MJPEG编码,AB中都有select()函数判断是否有来自视频输入通道的数据,A线程中的参数num(阈值)是一个不断变化的整型参量,B线程的创建与否,要根据num的值来决定,比如如果num大于10就创建B线程,请问怎么实现?
我的做法如下,但是出现了问题。
我从新设立一个全局变量num2,在A线程中将num2=num;然后在主进程中利用num2的值判定是否创建线程B。我试了一下,发现这和线程嵌套没什么区别啊?(我记得线程之间不能嵌套)线程A还是意外终止,提示select函数超时。线程之间不是不能嵌套吗?请问应该怎么做啊?
pthread_create(&APid, 0, AData,NULL);
while(1)
{
    if(num2>5)//num2是个不断变化的值,num2==num
    {
        pthread_create(&BPid, 0, BData,NULL);
    }
}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

努力!加油!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

speed9393

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by haixiawu at 2013-03-21 13:14:18
thread 可以在其他thread中创建,select timeout你可以把select放在while中。
while(true) {
   set timeout
   prepare fds
   rtn = select(xx,xx,xx);
   if not timeout then handle event
}

select就是在while下面的
努力!加油!
3楼2013-03-21 20:44:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

haixiawu

金虫 (文坛精英)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2013-03-22 00:35:12
thread 可以在其他thread中创建,select timeout你可以把select放在while中。
while(true) {
   set timeout
   prepare fds
   rtn = select(xx,xx,xx);
   if not timeout then handle event
}
2楼2013-03-21 13:14:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见