728x90
반응형
>>[C++ 관련 모든 글 보기]
1. lock 이란?
multi Thread간의 동기화를 맞추기 위해서 사용하는 개념입니다. 이를 구현해 놓은 것이 c/c++에서는 mutex와 lock_guid 입니다.
2. lock은 꼭 필요 한가?
multi thread 프로그램에서는 lock이 없다면 thead간 공유 데이터의 값이 엉망이 됩니다.
3. lock의 종류
1) mutex
- c에서 부터 사용하던 lock 입니다.
2) lock_guard
- mutex를 보다 안전 적으로 사용할 수 있게 제공되는 class 입니다.
4. lock 사용법
1) 기본 lock
사용자가 원하는 위치에서 lock을 걸고, 해제할 수 있습니다.
int count(int n)
{
mutex.lock();
if( n < 10 ) {
mutex.unlock();
return false;
}
mutex.unlock();
}
1) lock_guard
scope 단위로 lock을 적용합니다. 이게 가능 한 이유는 mutex를 lock_guard와 같이 사용하면 lock_guard class가 instance화 될 때 자동으로 lock을 호출하고, instance가 destory 될 때 자동으로 unlock을 호출 하기 때문 입니다.
{// 이 scope 벗어나면 lock이 해제 됩니다.
std::lock_guard<std::mutex> guard(mtx_lock);
std::cout << "Thread Parameter : " << nParam << std::endl;
}
>>[C++ 관련 모든 글 보기]
728x90
반응형
'ProgrammingLang > c++' 카테고리의 다른 글
[C++ 개발자되기] 13. 숫자 -> 문자 변환 AND 문자 -> 숫자 변환 (0) | 2020.01.08 |
---|---|
[C++ 개발자되기] 12. text file read 및 write (0) | 2019.12.05 |
[C++ 개발자되기] 10. map 사용법 (0) | 2019.12.02 |
[C++ 개발자되기] 9. type casting (cast operator) (3) | 2019.11.15 |
[C++ 개발자되기] 8. binary file read 및 write (3) | 2019.09.09 |