功能:使一个或多个线程等待其他线程各自执行完毕后再执行 目的:解决一个或多个线程在执行之前,必须依赖某些必要的前提业务先执行的场景 当一个任务运算量比较大的时候,需要拆分为各种子任务,必须要所有子任务完成后才能汇总为总任务。 使用并发模拟的时候可以使用CountDownLatch.也可以设置超时等待时间,

    1. class CountDownLatch : noncopyable
    2. {
    3. public:
    4. explicit CountDownLatch(int count);
    5. void wait(); //wait 直到计数值为0
    6. void countDown(); //当计数值为0时 通知所有等待线程
    7. int getCount() const;
    8. private:
    9. /* always mutable regardless of const */
    10. mutable MutexLock mutex_;
    11. Condition condition_;
    12. int count_;
    13. };

    闭锁是一种同步工具类,可以延迟线程的进度直到到达终止状态。其作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直处于关闭状态,并且无任何线程能通过,当到达结束状态时,这扇门会打开并允许所有线程通过。
    当闭锁到达结束状态后,将不会改变状态,此门将一直处于打开状态。

    通过描述可以描绘出两个应用场景

    • 让单个线程等待,模拟等待某些资源或。。就绪时,该进程可继续执行
    • 让多个线程等待,模拟并发的场景