1. 실행순서에 있어서의 동기화
: 메모리에 접근하는 쓰레드의 실행순서를 동기화 한다.
* 생산자/소비자 모델
: 입력하는 쓰레드와 출력하는 쓰레드를 독립시켜야 한다.
* 이벤트(Event) 기반 동기화
: 이벤트 오브젝트를 사용한다. 이벤트 오브젝트는 두가지 모드가 있다.
: 이벤트 오브젝트는 프로그래머 요청에 의해서 Signaled 상태가 된다.
: 함수가 Blocked 상태를 빠져나올 때 자동 리셋 모드 이벤트 오브젝트라면, Non-Signaled 상태로의 변화가 자동으로 이루어진다.
:
* 수동 리셋(Manual-Reset)모드 이벤트(Event)의 활용 예
: 수동 리셋 모드 이벤트는 원하는 타이밍에 둘 이상의 쓰레드를 동시에 깨워서 실행해야 할 때 아주 좋은 도구가 될 수 있다.
: 하지만 둘 이상의 쓰레드의 순서는 뮤텍스를 함께 사용해야 해결 할 수 있다.
2. 이벤트(Event) 더하기 뮤텍스(Mutex)
* 이벤트와 뮤텍스 오브젝트 적용 예제
3. 타이머(TImer) 기반 동기화
: Windows에서 Signaled 상태라는 개념이 중요하다. 어떤 커널 오브젝트는 자동으로 되기도 하고 함수호출을 통해 변하기도한다.
: 타이머 오브젝트는 정해진 시간이 지나면 자동으로 Signaled 상태가 되는 특성을 지닌다.
: 여기서 말하는 동기화는 쓰레드의 실행시간 및 실행주기를 결정하겠다는 의미이다.
: Non-Signal 로 생성된다.
- 수동리셋 타이머
: 가장 일반적인 타이머, 설정한 시간에 이벤트가 발생한다.
- 주기적 타이머
: 설정한 시간에 주기적으로 이벤트가 발생하거나, 설정한 시간 간격 주기로 이벤트가 발생한다.
|
'독후감 > 컴퓨터구조+운영체제+시스템프로그래밍' 카테고리의 다른 글
16. 컴퓨터구조에 대한 네번쨰 이야기 - Part4 메모리 관리와 I/O (2) | 2017.03.11 |
---|---|
15. 쓰레드 풀링(Pooling) (0) | 2017.03.11 |
13. 쓰레드 동기화 기법1 (0) | 2017.03.10 |
12. 쓰레드의 생성과 소멸 (0) | 2017.03.10 |
11. 쓰레드의 이해 (0) | 2017.03.10 |