void foo() {
static int id = 0;
const int local_id = id++;
//do something with local_id;
}
Multiple threads can call foo in parallel mu
Your code is not thread safe because two threads may increment id at the same time.
Use mutual exclusion or std::atomic for the shared id variable.
Your code is not thread-safe, because multiple threads can read id
concurrently, and producing the same value of local_id
.
If you want a thread-safe version, use std::atomic_int
, which is available in C++11:
void foo() {
static std::atomic_int id;
const int local_id = id++;
//do something with local_id;
}