我相信互斥锁并不足够,这就是条件变量存在的原因;但我还没有能够用具体场景说服自己必须要用条件变量。
条件变量、互斥锁和锁之间的区别问题的被接受答案指出,条件变量是带有“信号”机制的锁。它在线程需要等待资源可用时使用。一个线程可以"等待"一个条件变量,然后资源生成者可以"signal"这个变量,此时等待条件变量的线程会得到通知并且可以继续执行。
让我感到困惑的是,一个线程也可以等待互斥锁,在它被唤醒后,变量就变为可用了,那我为什么需要一个条件变量呢?
P.S.: 而且,无论如何都需要一个互斥锁来保护条件变量,这让我更难以理解条件变量的作用。