스레드 동기화

1. 스레드 동기화
 
0) 동기화란?
-작업들 사이의 수행 시기를 맞추는 것. 
사건이 동시에 일어나거나, 일정한간격을 두고 일어나도록 시간의 간격을 조정하는 것을 이른다.
 
1) 스레드 동기화(thread synchronization) 필요성
- 멀티 스레드를 사용하는 프로그램에서 두 개 이상의 스레드가 공유 데이터를 접근하는 경우


 
2) 다양한 스레드 동기화 기법


 
3) 스레드 동기화 원리


교착상태에 대해서 알아보자
[프로그래밍/NetWork] - 교착상태 (DeadLock)


그리고
이제 각종 동기화 기법에대해서 하나씩 자세히 알아보자!!!!
 

2. 임계 영역(CriticalSection) 
- 두 개 이상의 스레드가 공유 리소스를 접근할 때, 오직 하나의 스레드 접근만 허용해야 하는 경우에 사용
 
2_1)특징
- 유저영역 메모리에 존재하는 구조체이므로 한 프로세스에 속한 스레드 동기화에만 사용 가능
- 일반적인 동기화 객체보다 빠르고 효율적
 
2_2) 임계 영역 사용 예



 

3, 이벤트 객체 
- 특정 사건 발생을 다른 스레드에게 알릴 때 주로 사용
 
3_1) 이벤트 객체를 이용한 동기화 예
- 이벤트 객체를 비신호 상태로 생성
- 한 스레드가 작업을 진행하고, 나머지 스레드는 이벤트 객체에 대해 Wait어쩌구()함수를 호출함으로써 이벤트 객체가 신호상태가 되기를 기다림
- 스레드가 작업을 완료하면, 이벤트를 신호 상태로 바꿈
- 기다리고 있던 모든 스레드가 깨어나서 작업을 진행
 
3_2) 이벤트 객체 상태 변경


3_3) 이벤트 객체의 종류
- 자동 리셋(auto-reset) 이벤트
- 수동 리셋(manual-reset) 이벤트
 
3_4) 이벤트 객체 생성

이 글을 공유하기

댓글

Designed by JB FACTORY