write_lock이 하나라도 있으면 read_lock에 참여하지 못하도록 하는 것 아닌가요? 어떻게 구현하셨기에..
한 녀석이 read lock(shared lock이란 소리죠?)을 얻은 상태에서 다른 녀석들이 read_lock 과 write_lock을 요구할 경우, read_lock이 계속 우선권을 얻고 들어가게 구현하셨다는 소리 같은데요. 실제로 이렇게 할 경우, write lock은 위에서 질문하신 것 처럼 starvation에 빠지게 되겠죠.
해결책은 지금 생각 나는 것은.. write_lock 을 요구한 넘에게 카운터 하나 달아서 카운터가 꽉 차면 read_lock을 요구하는 넘이 있어도 못 얻도록 한다던가.. 머 그럼 되지 않을까요? 그냥 지금 생각한 건데..;; 헐헐;;
write_lock이 하나라도 있으면 read_lock에 참여하지 못하도록 하는 것 아닌가요? 어떻게 구현하셨기에..
한 녀석이 read lock(shared lock이란 소리죠?)을 얻은 상태에서 다른 녀석들이 read_lock 과 write_lock을 요구할 경우, read_lock이 계속 우선권을 얻고 들어가게 구현하셨다는 소리 같은데요. 실제로 이렇게 할 경우, write lock은 위에서 질문하신 것 처럼 starvation에 빠지게 되겠죠.
해결책은 지금 생각 나는 것은.. write_lock 을 요구한 넘에게 카운터 하나 달아서 카운터가 꽉 차면 read_lock을 요구하는 넘이 있어도 못 얻도록 한다던가.. 머 그럼 되지 않을까요? 그냥 지금 생각한 건데..;; 헐헐;;
결국 write 가 굶어 죽기전에 read 를 굶기는 방식이군요..ㅎㅎ
아마도 질문자는 하나의공유메모리로 다중프로세스간통신을 하는모양입니다.
프로세스들이 항상 리스닝하고 있다면 비효율적이므로 새메지지가 있을때만 즉각적으로 읽어들이도록 구현하시면 되는데 구현이 조금 복잡해는면도 있습니다.
라면이라도 끓여주면되지 않나요?ㅡ,.ㅡ;read를 대신굶기면 될듯
라면이라도 끓여주면되지 않나요?ㅡ,.ㅡ;
read를 대신굶기면 될듯합니다...
----------------------------------------------------------------------------
write_lock이 하나라도 있으면 read_lock에 참여하지 못하도
write_lock이 하나라도 있으면 read_lock에 참여하지 못하도록 하는 것 아닌가요? 어떻게 구현하셨기에..
[quote="cdpark"]write_lock이 하나라도 있으면 rea
한 녀석이 read lock(shared lock이란 소리죠?)을 얻은 상태에서 다른 녀석들이 read_lock 과 write_lock을 요구할 경우, read_lock이 계속 우선권을 얻고 들어가게 구현하셨다는 소리 같은데요. 실제로 이렇게 할 경우, write lock은 위에서 질문하신 것 처럼 starvation에 빠지게 되겠죠.
해결책은 지금 생각 나는 것은.. write_lock 을 요구한 넘에게 카운터 하나 달아서 카운터가 꽉 차면 read_lock을 요구하는 넘이 있어도 못 얻도록 한다던가.. 머 그럼 되지 않을까요? 그냥 지금 생각한 건데..;; 헐헐;;
http://home.postech.ac.kr/~sodomau
[quote="sodomau"][quote="cdpark"]write_l
결국 write 가 굶어 죽기전에 read 를 굶기는 방식이군요..ㅎㅎ
아마도 질문자는 하나의공유메모리로 다중프로세스간통신을 하는모양입니다.
프로세스들이 항상 리스닝하고 있다면 비효율적이므로 새메지지가 있을때만 즉각적으로 읽어들이도록 구현하시면 되는데 구현이 조금 복잡해는면도 있습니다.
----------------------------------------------------------------------------
답변들 감사합니다.근데 약간은 추상적이라 구현에 문제가 있네요..
답변들 감사합니다.
근데 약간은 추상적이라 구현에 문제가 있네요..
통신을 하는것은 아니구요
통신용 세마포어는 작성이 되어 동작을 잘하고 있습니다.
공유메모리 풀을 만들어 사용을 하고 있습니다.
근데 이넘이 자료구조가 좀 복잡하게 되어 있어서.
일단 구현을 보시구 좀더 구체적인 변경방법을..^^;
여기서 데이타 통신용으로 사용하는 세마버퍼들은 필요없구요.
나머지 세마버퍼들은 초기화 된 이후 op에 static로 사용될 뿐입니다.
댓글 달기