Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2007-06-05 10:01:49

Jos Hickson wrote:

> Understood. However, if the best implementation of uuid::create()
> depends on which of two usage patterns is assumed ("batch" or "one per
> program") maybe a better approach is to have both uuid_generator (for
> batch purposes) and uuid::create() (for the one-per-program usage)
> with the generator seeded using the randomness that uuid::create()
> uses.

We can consider dropping the two forms of uuid::create entirely and only
provide uuid_generator. The discussion has demonstrated that they have some
non-obvious pitfalls (one is slower than expected, the other assumes that
the user has supplied a good seed and this is unlikely).

class uuid_generator
    unsigned rd_[5];
    mt19937 en_;

        init rd_;
        seed en_ with rd_[4];

        generate a 128-bit number using en_;
        xor it with rd_[0..3];
        return a uuid based on it;

seems to address both issues.

Boost list run by bdawes at, gregod at, cpdaniel at, john at