ProgrammingLang/c++

[C++ 개발자되기] 11. multi thread를 위한 lock 사용법

jinkwon.kim 2019. 12. 4. 14:32
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
반응형