멀티코어와 동기화
읽기-쓰기 락(reader-writer lock)의 특징으로 올바른 것은?
- A쓰는 스레드는 몇 개든 동시에 들어갈 수 있지만, 읽는 스레드는 1개뿐이다
- B읽기만 하는 스레드는 동시에 몇 개든 들어갈 수 있지만, 쓰는 스레드는 1개뿐이며 그때는 다른 누구도 들어갈 수 없다
- C읽을 때도 쓸 때도 반드시 1개의 스레드만 들어갈 수 있다
정답과 해설 보기
정답: B. 읽기만 하는 스레드는 동시에 몇 개든 들어갈 수 있지만, 쓰는 스레드는 1개뿐이며 그때는 다른 누구도 들어갈 수 없다
읽기만 한다면 동시에 수행해도 데이터가 깨지지 않으므로, 읽기-쓰기 락은 읽는 쪽끼리의 동시 실행을 허용하고 쓰는 쪽만 배타적으로 만듭니다. 설정 테이블처럼 읽히는 일이 많고 갱신이 드문 데이터에서 병렬성을 높일 수 있습니다. 다만 읽는 쪽이 끊이지 않으면 쓰는 쪽이 언제까지고 들어가지 못하는 경우가 있어, 구현에 따라서는 쓰는 쪽을 우선하는 궁리가 되어 있습니다.
- A. 반대입니다.
- B. 맞습니다. 읽는 일이 많은 데이터에 적합합니다.
- C. 그것은 일반적인 락(뮤텍스)입니다.