Re: nanosleep over multiple processes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 22, 2012 at 03:38:14PM +0700, Randi Botse wrote:
> 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 <der.herr@xxxxxxx> 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
> >
> >
> --
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Hi

Why don't you use universally unique identifier (UUID)[1]?
I was invented and standardized to deal with cases like yours.
You can find more information how to use UUID in your software form
man uuid [2]

[1] http://en.wikipedia.org/wiki/Universally_unique_identifier
[2] http://linux.die.net/man/3/uuid

Best wishes
Vladimir Murzin
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux