1 条件变量的信号丢失
1.1 条件变量的信号丢失场景重现
拿生产者和消费者模型举例,看一段示例代码:
#include <iostream>
#include <vector>
#include <mutex>
#include <condition_variable>
#include <thread>
#include <unistd.h>
std::mutex mutex;
std::condition_variable cv;
std::vector<int> vec;
void consumer()
{
sleep(1);
std::unique_lock<std::mutex> lock(mutex);
std::cout << "blocking on wait" << std::endl;
cv.wait(lock);
std::cout << "executed wait" << std::endl;
std::cout << "consume " << vec.size() << "\n";
}
void produce() {
std::unique_lock<std::mutex> lock(mutex);
vec.push_back(1);
cv.notify_all();
st