日期:2014-05-16  浏览次数:20646 次

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);
    }
}
linux 线程 编程 C/C++

------解决方案--------------------
设计得很奇怪,一般都是先创建线程,然后当num大于10的时候,线程才处理事情,不然线程休眠。
------解决方案--------------------
我有一个想法,就是A B线程一起创建,在B线程里用pthread_crond_wait函数来等待A线程的信号,此时B线程是阻塞的,当A线程的Num大于10就给B线程发信号激活B线程。