[질문] 시간함수 clock_gettime() 와 관련하여 tv_nsec 의 범위

ssallamo의 이미지

안녕하세요,

전문가님들의 조언을 얻고자 합니다.

시간 함수를 가지고 키값을 생성하는 함수가 있는데요, 기존에는 단순히

gettimeofday() 함수를 사용해서 밀리세컨 단위로 키값을 설정해도 충분히 중복되지 않고

쓸 수 있었습니다만, 동시 처리량이 많아지면서 키가 중복되어 버리는 현상이 발생했습니다.

기존 tv_sec 의 1,000,000 표현범위보다 더 정밀한

clock_gettime() 의 tv_nsec를 사용하려고 했습니다.

뒤져보니 1,000,000,000 까지의 정밀하다고 하더군요,,

테스트로 대충 만들어서 돌려보았습니다.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
main()
{
struct timespec sCurNanoTimeVal;
int rtn, i;
 
	for(i=0; i<1000 ; i++){
	rtn = clock_gettime(CLOCK_REALTIME, &sCurNanoTimeVal);
	printf("[i:%06d] %ld %ld\n", i, sCurNanoTimeVal.tv_sec, sCurNanoTimeVal.tv_nsec);
 
	rtn = clock_gettime(CLOCK_REALTIME, &sCurNanoTimeVal);
	printf("[i:%06d] %ld %ld \n--\n", i, sCurNanoTimeVal.tv_sec, sCurNanoTimeVal.tv_nsec);
	}
 
	return 0;
}

로 돌려보았습니다만
결과는
----------------------------

tv_sec tv_nsec
--
[i:000994] 1307087854 806747000
[i:000994] 1307087854 806748000
--
[i:000995] 1307087854 806749000
[i:000995] 1307087854 806750000
--
[i:000996] 1307087854 806750000
[i:000996] 1307087854 806751000
--
[i:000997] 1307087854 806752000
[i:000997] 1307087854 806753000
--
[i:000998] 1307087854 806754000
[i:000998] 1307087854 806755000
--
[i:000999] 1307087854 806756000
[i:000999] 1307087854 806757000
--
-------------------------------------------------

로 tv_nsec 가 6자리로 표현되고 뒤에 000로 처리되더군요..

6자리만 사용한다면 기존에 밀리세컨으로도 사용할 수 있습니다만, 제가 원하는건 더 정밀한 값이 필요합니다.

아무리 찾아도 현재 값에 계산을 넣지 않으면,

6자리 이상 표현하게 하는 방법을 못찾았습니다.

TIME의 전문가님들!! 프로그램의 전문가님의 조언이 필요해요 ㅜㅜ

부디.... 저에게 한줄기 희망을.......................

감사합니다..

ssallamo@naver.com

ddoman의 이미지

아무런 수정없이 컴파일해서 돌려보니깐, 잘되는데요?

...
...
 
[i:000991] 1307136518 705085553
[i:000991] 1307136518 705088067 
--
[i:000992] 1307136518 705091070
[i:000992] 1307136518 705093584 
--
[i:000993] 1307136518 705096588
[i:000993] 1307136518 705099102 
--
[i:000994] 1307136518 705102175
[i:000994] 1307136518 705104619 
--
[i:000995] 1307136518 705107623
[i:000995] 1307136518 705110137 
--
[i:000996] 1307136518 705113210
[i:000996] 1307136518 705115655 
--
[i:000997] 1307136518 705118658
[i:000997] 1307136518 705121172 
--
[i:000998] 1307136518 705124175
[i:000998] 1307136518 705126690 
--
[i:000999] 1307136518 705129693
[i:000999] 1307136518 705132207

커널의 real-time clock과 관련된 부분 옵션을 한번 체크해보시는게 어떨지..
[Device Drivers] -> [Real Time Clock]

댓글 달기

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