を返し、この思い付いた:アトミックインクリメントとユニークなID生成機能をしようとしてカウンター
std::atomic<int> id{0};
int create_id() {
id++;
return id.load();
}
しかし、私は右、その関数が二度同じ値を返すようにするためにそれが可能だと仮定?たとえば、スレッドAは関数を呼び出し、値をインクリメントしますが、スレッドBが入っている間に停止し、値もインクリメントします。最後に、AとBの両方が同じ値を返します。
だから、ミューテックスを使用して、関数は次のようになります。
std::mutex mx;
int id = 0;
int create_id() {
std::lock_guard<std::mutex> lock{mx};
return id++;
}
私の質問:それは唯一のアトミックを使用してカウンターからユニークなint型の値を産卵の動作を作成することは可能ですか?私が求めているのは、私がidをたくさん産み出す必要があるからですが、mutexが遅いのを読んでいるからです。