std::atomic
を参照カウンタに使用するポインタ/弱ポインタ機構を実装しています(thisなど)。強いものに弱いのポインタを変換するために、私は強い参照カウンタがそうであれば C++はゼロ以外の場合std :: atomic_intをインクリメントします
- チェックをアトミックにする必要があり、それは
- 何かが変更されたかどうかを知るインクリメント。
std::atomic_int
を使用してこれを行う方法はありますか?私はそれがcompare_exchange
の1つを使って可能でなければならないと思うが、私はそれを把握することができない。定義std::atomic<int> ref_count;
int previous = ref_count.load();
for (;;)
{
if (previous == 0)
break;
if (ref_count.compare_exchange_weak(previous, previous + 1))
break;
}
previous
考える
'のstd :: shared_ptr'は、原子参照カウンタを使用して、あなたが知っています。あなたはいつもソースをチェックすることができます。 – Pubby
「何か変わったかどうかを知る」という部分はどういう意味ですか? – inf
インクリメントされたかどうかは、==の前に0ではないかどうか。 –