Re: nanosleep over multiple processes

Randi Botse <[email protected]> Fri, 22 Jun 2012 15:38:14 +0700
Newsgroups org.kernel.vger.linux-c-programming
Message-ID <CAA6iF_60u5dbOm7aQF30iWbsFHMj4=aPu8Ekg=McSF8QJ8yyQg@mail.gmail.com>
Hi Nicholas,

So sorry, I was mean clock_gettime() not nanosleep(), my bad. The
unique ID must be different in all proces, so no duplicated ID in
entire process.

And here the ID should be generated:

struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
unsigned long uid = ts.tv_sec + ts.tv_nsec;

Does your reply also covering this?

Thanks,

On 6/22/12, Nicholas Mc Guire <[email protected]> wrote:
> On Fri, 22 Jun 2012, Randi Botse wrote:
>
>> Hi All,
>>
>> In nanosecond precision, if I have multiple processes run nanosleep(),
>> how possbile they will get the same struct timespec value? both the
>> tv_sec and tv_nsec value. Of course the tv_sec (second) is most
>> possible, but how about the tv_nsec (nanosecond)?
>>
>> I wan't to create a simple stupid unique id or something like that,
>> but with without too much effort. The unique id will be tv_sec +
>> tv_nsec.
>>
> while it is highly unlikely that they get the same tv_nsec it is not
> impossible so it will not make for a good ID. The problem with such
> an ID is simply that if you have a collision then it will be very hard
> to debug this situation. Even worse this solution would not be portable
> at all - it even could work on one box (e.g. a UP system where the
> processes never execute physically concurrent) and fail on a MP in
> rare cases - portability to other OS would also be very shaky at the
> concept level (even if the API were pure POSIX).
>
> there are unique objects available to any process, pid, address (if
> address space randomization is enabled), /dev/random|/dev/urandom
> fetching a long long from there is far more reliable than generating
> a shaky long long from tv_nsecs (where the upper bits will almost
> surely match).
>
> let us know what you need it for and it is easiert to give some
> suggestions.
>
> thx!
> hofrat
>
>