티스토리 뷰

Condition Synchronization

1. 상호배제 : 한번에 하나의 쓰레드만 공유자원에 접근 가능

2. 조건 동기화 : 다수의 쓰레드 접근 동기화, 다수 쓰레드의 실행을 순서화

(특정조건 만족할 때 까지 대기, 조건 만족하면 다시 실행 시킴 )

Condition Variables

조건 동기화를 위한 추상화도구, 스레드가 어떤 조건을 만족할 때 까지 기다릴 수 있게(block) 해줌.

어떤 조건이 충족되지 않으면 대기열에 넣어두고, 충족되었을 때 다른 스레드가 깨움

1. wait() : 스레드가 조건이 만족 될 때 까지 잠듬(sleep)

2. signal() : 조건이 만족 되었을 때 기다리는 스레드 중 하나를 깨움

3. broadcast() : 조건이 만족 되었을 때 기다리는 모든 스레드를 깨움

 

Semaphore as Condition Variables

세마포어를 조건 변수처럼 사용할 수 있는 상황

1. 상호배제 , s값이 1이면 뮤텍스 처럼 동작

2. 조건 동기화

 

세마포어의 단점

1. Wait/signal 연산이 프로그램 전체에 흩어질 수 있음

2. Deadlock (교착 상태) 예시

Producer and Consumer Problem

공유버퍼를 두고 여러스레드 혹은 프로세스가 생산과 소비를 수행할 때 , 서로 영향을 미치는 것, 경쟁없이 효율적으로 실행 순서를 조정하는 동기화 문제 , bound buffer problem

제약조건

소비자는 버퍼가 비어 있으면 기다려야 함. >> 버퍼에 소비할 항목이 없음 >> wait()

생산자는 버퍼가 가득차면 기다려야 함 >> 더이상 값을 넣을 공간이 없음 >> wait()

 

 

Readers and Writers Problem

읽기 쓰레드 들이 동시에 데이터를 읽을 수 있도록 하되, 쓰기 스레드는 배타적 접근을 가져야 한다.

즉, 읽기는 동시에 가능, 쓰기는 혼자만 가능하도록 하여 성능을 향상 시킨다.

예시 ) database system : 여러 사용자가 데이터를 동시에 조회(read)할 수 있지만, 누군가가 데이터를 수정(write)하려면 단독으로 접근해야 함.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함