타이머 쓰레드.. 를 돌려라(?)

leolo의 이미지

시스템 시간이 변하면 문제가 생기는 프로그램이 있습니다.

이 경우 타이머 쓰레드라는 것을 구성해서

시간을 기록하면서 작업하라고 하는데요.

예가 될만한 코드가 있는지요..

또한, 어떠한 절차에 따라 작업이 이루어져야 하는 프로세스가 있습니다.

예를 들어 프로그램 A가 B에세 req 메시지를 보내면, res 메시지를 B가

보내는 형식이죠.. 그런데, 일정 시간 동안 B가 res 메시지를 보내지 않으면

A가 timeout 이 걸리게 할려고 하는데요.. 적당한 방법이 무엇인지요..

여기서, 프로그램 A는 쓰레드로 구현이 되었있으며, 중앙에 큐를 두어 프로그램

내의 여러 쓰레드랑 통신을 합니다.

예제 좀 알려주세요.. 타이머 관련해서..

lovemyin의 이미지

좋은 대답이 될지는 모르겠지만 우선 제생각은 이렇습니다.
우선 첫번째로 select를 사용해서 timeout을 설정하는 것입니다. 정해준 시간내에 응답이 없으면 timeout....
select 쓰는 방법은 Stevens의 UNP를 참고하세요
둘째로 넌블락 소켓을 사용하는 것입니다.
소켓을 넌블락 상태로 만들고 recv 함수를 구현해서 시간을 체크하는 것입니다.
루프를 돌면서 님이 정해준 시간동안 안오면 break 하는거지요...
좋은 답변이 됐을지 모르겠네요...
조금 있으면 많은 고수님들이 답글 주실거에요...

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

코퍼스의 이미지

위엣 분이 달아주신 것처럼 select를 쓰는 좋은 예제들이 많이 있지요.
대표적으로 유닉스/리눅스에서 많이 돌아가고 있는 daemon들이 예입니다.
dhcp이건, routing 관련이건, radius/tacacs+ 처럼 인증 관련 클라이언트들도 이런 테크닉을 많이 쓰고 있으니 한번 아무 소스나 찾아서 찾아보시면 됩니다.

A few Good Man

leolo의 이미지

일단 답변 감사드립니다.

select 도 시스템 시간에 영향을 받지 않는지요..

첫번쨰 질문에 대해서...

듣기로는 이렇게 지시를 받았거든요.

글로벌 변수하나 두고 계속해서 쳐다보면서.

timer 100 mmsec 이용 코드 수정해라.

이게 무슨 말인지..

실력이 있으면 삶이 편하다... 영차 영차...

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.