mutex 썸네일형 리스트형 유효한 뮤텍스의 범위 설정 POSIX PTHREAD나 Win32 Thread의 경우, 프로세스 내에서 스레드의 동기화를 제공하는 방법으로 pthread는 뮤텍스의 속성을 지정하게 되고, Win32에서는 이런 경우에 특화되어 있는 경량형 뮤텍스인 CRITICAL_SECTION 구조체를 사용하게 된다. 만약 프로세스 사이에서 스레드의 동기화가 필요하다면 pthread는 뮤텍스의 속성을 지정하는 pthread_mutexattr_t을 적절하게 설정하고, Win32의 경우에는 핸들을 사용하는 뮤텍스를 생성하여 사용한다. (즉, 커널 오브젝트를 생성한다) 여튼, 뮤텍스를 사용하고자 마음 먹었다면, 중요한 것은 생성한 뮤텍스의 범위를 어떻게 설정하는가이다. 즉, 여러개의 스레드가 존재하고, 이 스레드들이 공유된 메모리 영역에 접근하고자 할 때.. 더보기 Semaphore and Mutex 1965년에 E. W. Dijkstra는 wakeup 수를 카운트하기 위한 정수 변수, 즉 세마포어(Semaphore)라는 새로운 변수형을 제안하였다. 세마포어는 wakeup이 하나도 없는 0 값을 가질 수도 있고, 하나 이상이 보류되어 있는 양수값을 가질 수도 있다. Dijkstra는 sleep과 wakeup에 대응되는 두 개의 동작 down, up을 갖도록 제안하였다. down 동작은 해당 세마포어 변수가 0보다 큰가를 검사한다. 큰 값이면 1만큼 감소시키고 계속된다. 만약 0이면 그 프로세스는 바로 자게 된다. 변수를 검사하고, 변경하고, 잘 수 있게 하는 동작은 분리되지 않는 단위동작으로 일어난다. 이것은 세마포어 동작이 일단 시작되면 다른 어떤 프로세스도 이 동작이 완료되거나 블록되지 않는 한 .. 더보기 이전 1 다음