Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 오블완
- ZED2
- U-blox
- 아두이노
- 인공지능
- RTK
- 자율탐사
- ROS
- QT
- C++
- 자율주행
- WSL
- turtlesim
- 젯슨
- Jetson
- 터틀심
- GUI
- 티스토리챌린지
- SLAM
- 강화학습
- ROS2
- 로봇
- Simulation
- Gazebo
- ubuntu
- Puck LITE
- GPS
- Visual SLAM
- WSL2
- turtlebot3
Archives
- Today
- Total
직관적인느낌
std::mutex 와 lock/unlock 본문
728x90
반응형
"std::mutex"는 C++ 표준 라이브러리의 일부로서,
동시에 여러 스레드가 공유 자원에 접근하는 것을 방지하는 데 사용되는 동기화 프리미티브입니다.
여러 스레드가 공유 자원에 동시에 접근하려고 하면 데이터 경쟁 상황이 발생할 수 있으며,
이는 데이터의 일관성을 해칠 수 있습니다. "
std::mutex"는 이러한 상황을 방지하기 위해 사용됩니다.
- 공유 자원에 접근하기 전에 뮤텍스를 잠급니다(lock).
- 공유 자원을 안전하게 사용합니다.
- 공유 자원의 사용이 끝나면 뮤텍스를 해제합니다(unlock).
"std::mutex"의 주요 메서드에는 "lock"과 "unlock"이 있습니다.
- lock():
이 메서드는 뮤텍스를 잠그는데 사용됩니다.
뮤텍스가 이미 잠겨 있으면, 호출 스레드는 뮤텍스가 해제될 때까지 블록됩니다.
뮤텍스가 해제되면, 호출 스레드는 뮤텍스를 잠그고 진행합니다. - unlock():
이 메서드는 뮤텍스를 해제하는데 사용됩니다.
뮤텍스를 해제하면, 뮤텍스에 대해 블록된 다른 스레드 중 하나가 뮤텍스를 잠글 수 있게 됩니다.
또한, "std::lock_guard"와 "std::unique_lock"과 같은 RAII(Resource Acquisition Is Initialization) 객체를 사용하여 뮤텍스를 자동으로 잠그고 해제할 수 있습니다.
이는 뮤텍스를 직접 관리해야 하는 부담을 줄여주며, 예외 안전성을 향상시킵니다.
이러한 객체는 생성될 때 뮤텍스를 잠그고, 파괴될 때 뮤텍스를 해제합니다.
728x90
반응형
'공학' 카테고리의 다른 글
Eigen과 Sophus (0) | 2024.01.10 |
---|---|
TBB(Threading Building Blocks)와 concurrent_queue/concurrent_vector [+일반 컨테이너] (0) | 2024.01.09 |
std:: vector와 힙/스택/큐 (0) | 2024.01.09 |
Github 코드 수정 및 branch 생성 (0) | 2023.03.25 |
[review] 자전거 강화학습 - 본문 (0) | 2023.02.08 |