TL;DR
- Thread 를 사용하는 예제까지 적어놓으면 좋겠지만, 일단
#include <iostream>
#include <mutex>
int shared;
int main() {
std::mutex m;
// 이름이 시사하는 것처럼, `lock()` 는 lock 을 잡는 함수다.
// 만약 누군가가 lock 을 이미 잡았다면, 그것을 놓아줄 때 까지 기다리게 된다.
m.lock();
shared = 123;
// 잡은 lock 을 놓는 것
m.unlock();
// 얘는 `lock()` 과 다르게 lock 을 잡지 못해도 기다리지 않고 바로 return 된다.
// 만약 잡았다면 true 를, 못잡았다면 false 를 반환한다.
if (m.try_lock()) {
std::cout << "Lock acquired" << std::endl;
m.unlock();
} else {
std::cout << "Cannot acquire lock" << std::endl;
}
}