有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);
}
}


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的。
Quite_Night 于 2013-05-10 20:33:44发表:
弱弱的问一句:while(1)
{
if(num2>5)//num2是个不断变化的值,num2==num
{
pthread_create(&BPid, 0, BData,NULL);
}
}
这个是不是一直创建下去?
haohu137 于 2013-05-09 19:06:42发表:
路过,看看。
PiOsnoae 于 2013-03-21 14:43:26发表:
这1圆现金不好赚吖