The increment must have release semantics, so that the effects of all previous entries will not be reordered after the increment.
curWriteNum std::atomic<int>. std::atomic<int> . , memory_order_seq_cst , , . , curWriteNum.fetch_add(1, std::memory_order_release).
int n = curWriteNum;, , , int n = curWriteNum.load(std::memory_order_acquire);.
. std:: memory_order. , ++ Beyond 2012: Herb Sutter - atomic < > Weapons, 1 of 2.