Да.Все потоки будут согласовывать порядок, в котором различные потоки модифицировали переменную num
;k-ный поток для выполнения этой строки кода определенно получит значение k.Использование std::memory_order_relaxed
, однако, подразумевает, что обращения к num
не синхронизируются друг с другом;таким образом, например, один поток может изменить некоторую другую атомарную переменную x
до того, как она изменит num
, а другой поток может увидеть изменение num
, сделанное предыдущим потоком, но впоследствии увидеть старое значение x
.