목록멀티쓰레드 (2)
Coding Memo
각 용어의 정의를 간단히 설명 하자면... (요약) Atomic: 말그대로 원자성이란 뜻으로 Atomic 명령 실행 중에는 다른 어떤 간섭 없이 끝까지 실행됨을 보장 Lock: Multi-Thread 환경에서 여러 쓰레드가 공유하는 어떤 리소스(변수 등)에 접근하는 방법에 대한 메커니즘 Critical Section: Multi-Thread 환경에서 상호 배제를 보장하는 특정 구역(section) 공유 리소스 접근 컨트롤이 필요한 이유 아래 코드를 살펴보자. int n = 0; void Thread1() { for (int i = 0; i < 100000; i++) { n++; } } void Thread2() { for (int i = 0; i < 100000; i++) { n--; } } int ma..
본 포스팅은 인프런에 등록되어 있는 Rockiss 님의 강의를 보고 간단하게 정리한 글입니다. C++ 에서도 C11 부터 자체적으로 std에 lock을 지원해주고 있다. 기본적인 lock 기능만 사용할 경우 불편한 점이 몇가지 있다. 1. 표준 mutex로는 재귀적인 lock을 잡을 수 없다. (recursive_mutex가 있긴하다) 2. 메모리를 동시에 쓰거나 읽을 때는 반드시 원자적으로 접근해야하지만, 읽기만 할때는 반드시 원자적으로 접근 할 필요가 없다. (-> 많은 쓰레드들이 동시에 어떤 값을 읽기만 하는 것은 lock이 필요하지 않을 수 있다.) 따라서 위와 같은 불편한 점과 편의를 위해 직접 구현하기도 한다. 구현 핵심 lock을 가지고 있는 쓰레드들을 구분하기 위해 32bit 사용 상위 1..