lkml.org 
[lkml]   [2002]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: gettimeofday problem
In this piece of code I convert seconds and microseconds in 
milliseconds. I think the problem is not in my code, in fact I wrote the
following piece of code in Java, and it does not work too. In the for
loop the 90% of times b > a while for 10% of times not.

class Prova {
public static void main(....) {
for (;;) {
long a = System.currentTimeMillis();
long b = System.currentTimeMillis();

if (a > b) {
System.out.println("Wrong!!!!!!!!!!!!!");
}
}
}
}


Chris McDonald wrote:

>In linux.kernel you write:
>
>
>
>>Hi,
>>
>>
>
>
>
>>I am writing a small piece of code that use the gettimeofday routine and
>>I have noticed a very strange behaviour. If I call the routine two times
>>in sequence I expect that the second value is greater than or equal to
>>the first one, but it is not true.
>>
>>
>
>Perhaps because tv_usecs are MICROsecs, not MILLIsecs ?
>
>_______________________________________________________________________________
> Dr Chris McDonald EMAIL: chris@csse.uwa.edu.au
> Department of Computer Science & Software Engineering
>The University of Western Australia WWW: http://www.csse.uwa.edu.au/~chris
> Crawley, Western Australia, 6009 PH: +61 8 9380 2533, FAX: +61 8 9380 1089
>
>
>
>
>>please check the following code.
>>
>>
>
>
>
>>Sometimes happen that the string "Strange Behaviour" is printed with
>>kernel 2.4.18.
>>
>>
>
>
>
>>I tried to find in the Linux Archive patches to solve this problem, but
>>I didn't find anything (there are emails that talk about gettimeofday,
>>but probably they do not answer to my questions).
>>
>>
>
>
>
>>The same thing happen in Java using the System.currentTimeMillis() routine.
>>
>>
>
>
>
>>#include <fstream.h>
>>#include <sys/time.h>
>>
>>
>
>
>
>>// this routine calculate the current time returning its value in long
>>long format.
>>long long currentTimeMillis() {
>> long long t;
>> struct timeval tv;
>>
>>
>
>
>
>> gettimeofday(&tv, 0);
>>
>>
>
>
>
>> t = tv.tv_sec;
>> t = (t *1000) + (tv.tv_usec/1000);
>>
>>
>
>
>
>> return t;
>>}
>>
>>
>
>
>
>>void main() {
>> for (;;) {
>> long long a = currentTimeMillis();
>> long long b = currentTimeMillis();
>>
>>
>
>
>
>> if (a>b) {
>> cout << "Strange Behaviour" << endl;
>> }
>> }
>>}
>>
>>
>
>
>


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:27    [W:0.090 / U:3.108 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site