Последует ли SYSCALL автоматически барьер/значения памяти/значения чтения последовательно согласованные (в частности, FULinux

Ответить
Anonymous
 Последует ли SYSCALL автоматически барьер/значения памяти/значения чтения последовательно согласованные (в частности, FU

Сообщение Anonymous »

В C ++ у меня есть два потока.
Каждый поток сначала выполняет хранилище на одной переменной, затем нагрузку на другую переменную, но в обратном порядке: < /p>
std::atomic please_wake_me_up{false};
uint32_t cnt{0};

void thread_1() {
std::atomic_ref atomic_cnt(cnt);

please_wake_me_up.store(true, std::memory_order_seq_cst);
atomic_cnt.load(std::memory_order_seq_cst); //
Если все четыре атомных доступа выполняются с последовательной последовательности, гарантируется, что по крайней мере один поток увидит хранилище другого потока при выполнении нагрузки. Это то, чего я хочу достичь. < /P>
Поскольку futex < /code> -syscall должен выполнить нагрузку переменной, которую она работает внутри, мне интересно, могу ли я опустить (дублированную) нагрузку прямо перед Syscall. Syscalls в целом действуют как полные барьеры памяти? Есть ли какая-либо гарантия, что нагрузка внутри Syscall происходит с последовательной последовательности? Я был бы заинтересован в x86_64 и ARM64.


Подробнее здесь: https://stackoverflow.com/questions/794 ... tially-con
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»