两个相关线程,两者之间的有着数据的关联,如何协调两者之间的关系,是它们顺利运行

线程1 运行函数func1(),线程2运行func2().
func1()
{
for( ... ){
生成一个随机数 a(全局变量);

            pthread_cond_signal( func2);                                    //唤醒func2
            使用生成的随机数 a 进行相关计算,结果为 A1;
            pthread_cond_wait (A2);                                        //等待func2的结果 A2

            等待func2的结果 A2,与A1比较大小;
    }

}

func2()
{
do{
pthread_cond_wait ( a ); //等待func1生成随机数 a;

            等待func1生成一个新的 a ;
            进行运算,生成结果A2;

            pthread_cond_signal ( func2)          //唤醒func1,进行比较
    }

}
两个线程的大体含义是 线程1 生成一个a值,线程1,2都需要该值进行比较。

两个函数内,我使用了pthread_cond_wait()进行协调运行,单是pthread_cond_signal()经常空操作,程序不能正常运行。

各位大神有没有更好的方法来协调两个函数之间的运行。任何方法都可以。

http://blog.csdn.net/kaiwii/article/details/6758942
http://blog.csdn.net/autumn20080101/article/details/9491159