互斥锁:互斥锁可以理解为排队上厕所,进去一个人(一个线程)->关上门(上锁)->拉粑粑(线程访问公共资源)->结束后出来打开门(释放锁),然后下一个人(队列中的线程)继续同样的操作。
条件锁:可以理解为排队进站,列车来了(signal)->VIP(线程优先级)先上->一次根据排队顺序上(排队先后时间);
当然,这里可能存在一个打开车门,大家一拥而上的问题。但是线程调用pthread_cond_signal不会有“惊群现象”产生,因为pthread_cond_signal最多只给一个线程发信号。如果有多个线程等待,会如同上述例子,先根据优先级执行,再根据等待时间依次执行线程。
注意:pthread_cond_signal调用最多发信一次。