Consider the following implementation of rand_double()
, in which there is a thread_local
function variable seed
that is initialized using std::random_device{}()
in each thread:
auto rand_double(double min, double max) {
thread_local uint64_t seed = std::random_device{}();
// ^^ Are the calls to std::random_device guaranteed to not interleave?
/* Generate random `double` and return it... */
}
I have learned that the initialization of static function variables is guaranteed to be thread-safe. However, I haven't found a source that states if, when using a function to initialize the static
function variable, calls to that function will not interleave. Can someone confirm if using a function to initialize static
(specifically thread_local
- does it make a difference?) function variables is thread-safe?
Aucun commentaire:
Enregistrer un commentaire