[완료] timeout 함수를 등록하려고 하는데, 좋은 방법 좀 추천해주세요!! [hash node삭제 시]

jms_jms의 이미지

안녕하세요? 초보 개발자 입니다. ㅠ,ㅠ.
어플리케이션에서 Hash에 특정 node를 등록한 뒤에 해당 node를 참조를 한 시간이 일정 시간을 초과한 경우에 해당 node를 삭제하는 것을 생각중에 있는데... 딱히 좋은 방법이 떠오르지 않아서 고민중에 있습니다.
node등록할때마다 signal을 등록해서 해야 하는건가요? 이건 솔직히 무리수 인듯 보여서..ㅠ,ㅠ.
좋은 방법이 없을까요?
허접한 질문일지 모르지만, 답변 부탁합니다. 아니면 특정 time-slice를 주기로 hash를 traverse 해야 하는건가요? 이럴경우 O(n)에 해당하는 성능을 발생시킬 것 같아서 ㅠ,.ㅠ
어떤 방법이 효율적인지 몰라서 이렇게 질문을 올립니다.
아니면 ref할 수 있는 site라도 좀 추천 부탁드립니다.

감사합니다.

익명 사용자의 이미지

hash에 node를 추가할 때 heap에 해당 node의 reference도 추가합니다.

heap에서 사용되는 비교 키는 timestamp가 되구요.

일정시간마다 heap에서 가장 timestamp가 빠른 node를 탐색해서(O(1)) 시간이 지난 것이라면 삭제해주고,
update된 녀석이라면 다시 추가해서 넣어주면 될듯한데요.

heap구성비용이 들기는하지만, 매번 모든 node를 확인하는것보다는 효율적일 것 같습니다.

이해가 되실런지 모르겠네요.

jms_jms의 이미지

답변 감사합니다.

The ***er you become, the more you are able to ***.

jick의 이미지

그냥 LRU list 만들어놓고 노드를 사용할 때마다 젤 뒤로 빼주면 되는 거 아닌가요?

뭐, 이렇게만 하면 list가 병목이 되어 멀티 CPU에서 성능저하가 일어날 수 있지만, 그정도로 성능이 절실한 것 같지는 않고...

jms_jms의 이미지

답변 감사합니다.

The ***er you become, the more you are able to ***.

익명 사용자의 이미지

Effective TCP/IP Programming 책에서

Tip 21 : Consider Making Your Applications Event Driven (2) 챕터에 비슷한 유형의 코드가 있습니다.

찾아보세요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.