Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Study

Read-Write Lock 본문

Programming/개념

Read-Write Lock

마늘부추 2020. 3. 30. 23:16

Reader-Writer Lock

 

하나의 데이터에 접근하려는 5개의 Thread가 있다.

 

[그림 01]


위 경우에서 Thread 1, 4가 쓰기 작업을 수행하기 위해 Data에 동시 접근하는 경우 문제가 발생할 수 있다.
혹은 Thread 2가 Data를 읽으려는 순간 Thread 1이 Data의 내용을 변경해버릴 경우 문제가 발생할 수 있다.
그렇기 때문에 공유 자원에 접근하기 위해서는 동기화 처리를 해주어야 한다.
한번에 하나씩만 자원에 접근하도록.

 

그러나 값을 그저 읽기만 하는 경우에는 동기화 작업이 꼭 필요하지 않다.
오히려 한 Thread만이 접근할 수 있기에 대기시간으로 인해 비효율을 초래할 수 있다.

 

따라서 rwLock은 Read Lock이 걸린 상태에서 다른 Read Lock이 걸려오면 Read 작업을 그대로 수행하도록 하고,
Write Lock이 이어서 걸려오면 Block 시킨다.

 

[그림 02]

그러나 Read 작업이라고 해서 전부 다 수행한다면
순위가 밀려 한참동안 Write 작업을 수행하지 못하게 될 수 있다.

이러한 현상을 방지하기 위해 Write가 먼저 대기하고 있다면 Read 작업도 대기하도록 하는 방법이 있다.