pthread의 주기설정을 할 수 있습니까?

gelfosman의 이미지

제가 하고싶은 것은,
pthread_creat를 통해 생성된 쓰레드가 하나 있습니다. 이놈을
20ms단위로 깨어나서 동작하게 하고 싶습니다. 그러니까
block되어 있다가, 20ms가 지나면 할당된 큐에 머 처리할게 없나...한번 살펴보고
있으면 처리하고나서 block되고, 없으면 바로 다시 block되는데, 그러니까 쓰레드에 주기를 설정해 주고 싶은 겁니다. usleep함수사용 말구요, 이건 스레드 실행후에 혹은 전에 20ms기다린다는 말이라 실행시간을 측정해 봤더니 2x.xx ms시간이 이렇게 측정됩니다. 이게 실행시간+대기시간=20ms 로 고정되게 하려면 어떻게 접근해야 할까요??? 고수님들 부탁드립니다. ㅠ.ㅠ

dragonkun의 이미지

pthread_cond_wait() 로 스레드를 재우고 있다가..
다른 스레드에서 20ms 마다 pthread_cond_signal() 을 보내서 깨우는 걸 반복하는 식으로 하면 되지 않을까요?
--------
Emerging the World!

Emerging the World!

오호라의 이미지

void* pthead_id_1( void* )
{
    struct timespec interval;
 
    interval.tv_sec = 0;
    interval.tv_nsec = 200000000L;   // (  20 ms )
 
   //  nanosleep 의 현재 구현은 1/HZ s (i.e, 10 ms on Linux/i386 and 1 ms on Linux/Alpha) 의 resolution을 가지고 있는 표준의 커널 타이머 메카니즘을 기본으로한다.  그러므로, nanosleep 는 적어도 지정된 시간만큼 항상 일시 정지한다. 그러나 그것은 프로세스가 다시 실행가능해지기까지 지정된것 보다 10ms이상 더 걸릴 수 있다. 같은 이유로, *rem에 전달된 시그널의 반환값은 대개 1/HZ s정도 된다.
   while( !nanosleep () )
   {
       // to do..
   }
 
   // fps
 
}

의외로 노력대 성능비가 뛰어남.

IamAboy. YouareAgirl. Ah.hhh...

Hello World.

댓글 달기

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