红联Linux门户
Linux帮助

linux线程编程问题

发布时间:2013-03-21 11:16:59来源:红联作者:speed9393
有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);
}
}
文章评论

共有 4 条评论

  1. zyy_hz 于 2013-05-31 11:43:08发表:

    你那个num是全局的吗?
    pthread_create(&APid, 0, AData,NULL);
    你创建A线程的时候没传参数啊!
    你A线程是怎么获取num这个值的啊
    还有就是
    if(num2>5)//num2是个不断变化的值,num2==num
    {
    pthread_create(&BPid, 0, BData,NULL);
    }
    这个判断是不是有问题,你num2是自动加的吗,是什么时候加的。
    如过num2都是小于5的话这个while就相当于死循环了,会占用很高的cpu的。

  2. Quite_Night 于 2013-05-10 20:33:44发表:

    弱弱的问一句:while(1)
    {
    if(num2>5)//num2是个不断变化的值,num2==num
    {
    pthread_create(&BPid, 0, BData,NULL);
    }
    }

    这个是不是一直创建下去?

  3. haohu137 于 2013-05-09 19:06:42发表:

    路过,看看。

  4. PiOsnoae 于 2013-03-21 14:43:26发表:

    这1圆现金不好赚吖