스레드 동기화
- 프로그래밍/NetWork
- 2011. 5. 23. 11:08
1. 스레드 동기화
0) 동기화란?
-작업들 사이의 수행 시기를 맞추는 것.
0) 동기화란?
-작업들 사이의 수행 시기를 맞추는 것.
사건이 동시에 일어나거나, 일정한간격을 두고 일어나도록 시간의 간격을 조정하는 것을 이른다.
1) 스레드 동기화(thread synchronization) 필요성
- 멀티 스레드를 사용하는 프로그램에서 두 개 이상의 스레드가 공유 데이터를 접근하는 경우
2) 다양한 스레드 동기화 기법
3) 스레드 동기화 원리
2. 임계 영역(CriticalSection)
- 두 개 이상의 스레드가 공유 리소스를 접근할 때, 오직 하나의 스레드 접근만 허용해야 하는 경우에 사용
2_1)특징
- 유저영역 메모리에 존재하는 구조체이므로 한 프로세스에 속한 스레드 동기화에만 사용 가능
- 일반적인 동기화 객체보다 빠르고 효율적
2_2) 임계 영역 사용 예
3, 이벤트 객체
- 특정 사건 발생을 다른 스레드에게 알릴 때 주로 사용
3_1) 이벤트 객체를 이용한 동기화 예
- 이벤트 객체를 비신호 상태로 생성
- 한 스레드가 작업을 진행하고, 나머지 스레드는 이벤트 객체에 대해 Wait어쩌구()함수를 호출함으로써 이벤트 객체가 신호상태가 되기를 기다림
- 스레드가 작업을 완료하면, 이벤트를 신호 상태로 바꿈
- 기다리고 있던 모든 스레드가 깨어나서 작업을 진행
3_2) 이벤트 객체 상태 변경
3_3) 이벤트 객체의 종류
- 자동 리셋(auto-reset) 이벤트
- 수동 리셋(manual-reset) 이벤트
3_4) 이벤트 객체 생성
이 글을 공유하기