| [ CnUnix ] in KIDS 글 쓴 이(By): testors (testors) 날 짜 (Date): 2004년 2월 14일 토요일 오전 12시 44분 20초 제 목(Title): R/W lock 의 실생활에서의 발견 며칠전, 뜻하지 않게 reades/writers lock 을 실생활에서 발견하였습니다. 시작은 이렇습니다. 아는 사람들 넷이서 모여서 닭갈비 번개를 하기로 했습니다. 근처 오락실에서 만나기로 했는데 약속 시간이 되어 모두 모였습니다. 오락실 온김에 4인플레이 가능한 건슈팅 게임이 있어 같이 플레이 하였지요. !! 여기서 게임을 플레이 하는것을 read lock 이라고 하고 모두 나가서 닭갈비를 먹는것을 write lock 이라고 합시다. 개인간 실력차가 있어 일부가 먼저 게임 오버 되었습니다. 그들은 여전히 플레이 중인 다른 사람들을 기다리다가 지루했는지 이내 다른 게임을 플레이 하기 시작합니다. (네, 역시 read lock 은 서로간의 간섭이 없군요) 다른 사람들이 모두 게임 오버 되었지만 read lock 이 여전히 걸려 있기에 write lock 은 진입이 불가능 합니다. (여기까진 별 무리없는 R/W lock 으로 보입니다) 하지만 우리의 R/W lock 구현은 썩 훌륭하지 못했습니다. write lock 이 대기상태 였지만 어떤 이에 의해 추가적인 read lock 이 걸리고 만 것입니다...! A 가 게임을 하는것을 기다리다 B 가 다시 게임을 하고 그후 A 는 게임오버되고.. 다시 B 를 기다리다 게임을 하는... 이 race 가 약 4-5 회 정도 반복되었습니다. 결국, 심하게 배가 고프다는 것을 느낀 사람들은 이후 read lock 의 priority 를 현저히 낮춤으로서 write lock 의 starve 를 막을 수 있었습니다. 오락실에서 벙개하면.. 기다리기 지루하다고 게임 하지 맙시다. -.- - Testors |