공유 상태 탐색
여러 스레드가 동시에 읽고 쓰는 값과 그 값 사이의 조건을 묶어 본다.
mutex와 lock은 공유 상태를 동시에 바꾸지 못하게 한다. 보호해야 할 것은 변수 하나가 아니라 여러 값이 함께 만족해야 하는 조건이다.
여러 스레드가 동시에 읽고 쓰는 값과 그 값 사이의 조건을 묶어 본다.
검증과 갱신은 잠금 안에 두되, 오래 걸리는 I/O나 callback 호출은 밖으로 뺀다.
두 개 이상의 mutex를 잡아야 하면 항상 같은 순서 또는 std::scoped_lock을 사용한다.
std::mutex m;
std::vector<Job> queue;
void push(Job job) {
std::lock_guard<std::mutex> lock(m);
queue.push_back(std::move(job));
}