在异步编程模式下,一般会有这样的场景,即一个线程(生产者)准备好一个任务后,需要通知一个或者多个其他线程(消费者)进行处理,这个时候我们想到了mutex,但是互斥锁只是保护临界资源,在这种场景下是不适用的。对,这个时候可以用条件变量,但是条件变量使用起来特别繁琐,需要mutex配合使用,虽然在C++11下对条件变量以及mutex进行了RAII封装,分别是std::condition_variable以及std::unique_lock(不能使用std::lock_guard),但是用起来还是不够简洁。 在C++11…