下面是 pthread_join的函数原型:
int pthread_join( pthread_t thread,
void ** retval
);
参数说明...当事件或者条件发生之后, 另一个线程可以通过信号来唤起挂起的线程...., 就在其刚要挂起的时候(还没挂起), 线程2执行了唤醒线程1的代码(修改flag的值, 唤醒线程1), 假设线程2执行完上述操作之后, 线程1仍然还没有挂起, 所以 pthread_cond_signal...此后线程1终于进入了挂起状态, 等待线程2的唤醒, 而线程2则认为它已经唤醒了线程1, 让其往下执行了. 此时问题就来了, 如果线程2不再执行唤醒线程1的操作, 那么线程1就会永远处于挂起状态....线程1就会永远处于挂起状态, 线程2就会永远处于请求互斥锁的状态.