티스토리 뷰
1. n writer, n reader
semaphore 사용. 매우 느림. 심지어 wait 상태도 busy.....하므로
2. n writer, 1 reader
writer들과 reader의 자원을 분리한다.
writer의 업데이트를 reader에 알려주는 방식으로 reader 스레드가 업데이트를 받아 직접 자료를 수정하고 읽는다.
3. 1 writer, n reader
RCU 사용. (read copy update)
writer가 자원을 미러링한 후 수정 -> reader에게 새로운 자원 포인터 넘김
*
3의 경우가 가장 많은 경우
커널엔 RCU가 구현되어있지만 (http://jake.dothome.co.kr/rcu/)
유저레벨 개발에선 직접 RCU를 구현해야 함.
'Programming tips > architecture' 카테고리의 다른 글
CAS, RCU (0) | 2018.03.31 |
---|