[완료] timeout 함수를 등록하려고 하는데, 좋은 방법 좀 추천해주세요!! [hash node삭제 시]
글쓴이: jms_jms / 작성시간: 월, 2011/08/08 - 11:21오전
안녕하세요? 초보 개발자 입니다. ㅠ,ㅠ.
어플리케이션에서 Hash에 특정 node를 등록한 뒤에 해당 node를 참조를 한 시간이 일정 시간을 초과한 경우에 해당 node를 삭제하는 것을 생각중에 있는데... 딱히 좋은 방법이 떠오르지 않아서 고민중에 있습니다.
node등록할때마다 signal을 등록해서 해야 하는건가요? 이건 솔직히 무리수 인듯 보여서..ㅠ,ㅠ.
좋은 방법이 없을까요?
허접한 질문일지 모르지만, 답변 부탁합니다. 아니면 특정 time-slice를 주기로 hash를 traverse 해야 하는건가요? 이럴경우 O(n)에 해당하는 성능을 발생시킬 것 같아서 ㅠ,.ㅠ
어떤 방법이 효율적인지 몰라서 이렇게 질문을 올립니다.
아니면 ref할 수 있는 site라도 좀 추천 부탁드립니다.
감사합니다.
Forums:
heap을 이용하면 어떨까요?
hash에 node를 추가할 때 heap에 해당 node의 reference도 추가합니다.
heap에서 사용되는 비교 키는 timestamp가 되구요.
일정시간마다 heap에서 가장 timestamp가 빠른 node를 탐색해서(O(1)) 시간이 지난 것이라면 삭제해주고,
update된 녀석이라면 다시 추가해서 넣어주면 될듯한데요.
heap구성비용이 들기는하지만, 매번 모든 node를 확인하는것보다는 효율적일 것 같습니다.
이해가 되실런지 모르겠네요.
답변 감사합니다.
답변 감사합니다.
The ***er you become, the more you are able to ***.
...
그냥 LRU list 만들어놓고 노드를 사용할 때마다 젤 뒤로 빼주면 되는 거 아닌가요?
뭐, 이렇게만 하면 list가 병목이 되어 멀티 CPU에서 성능저하가 일어날 수 있지만, 그정도로 성능이 절실한 것 같지는 않고...
답변 감사합니다.
답변 감사합니다.
The ***er you become, the more you are able to ***.
어디선가 본듯한 코드..
Effective TCP/IP Programming 책에서
Tip 21 : Consider Making Your Applications Event Driven (2) 챕터에 비슷한 유형의 코드가 있습니다.
찾아보세요
댓글 달기