Зачем загружать и обмениваться std :: atomic ?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Зачем загружать и обмениваться std :: atomic ?

Сообщение Anonymous »

В p2300 в примере «1.4. Asynchronous Windows Socket Recv» используется шаблон для обозначения завершения (для установки обратного вызова отмены), который выглядит следующим образом: < /p>

Код: Выделить всё

if (ready.load(std::memory_order_acquire) ||
ready.exchange(true, std::memory_order_acq_rel))
{ ... }
, где готово является std :: atomic .
Для меня выглядит так, что мы могли бы использовать просто обмен :

if (ready.exchange(true, std::memory_order_acq_rel))
{ ... }

Мой вопрос: Почему также загружать как в первом примере? Мне не ясно, если это сделано для правильности или эффективности. Первый поток вызывает API C, взяв обратный вызов C, а затем необходимо выполнить некоторую работу, выполняя необязательную, называемую переменную stopcallback .
, как правило, первое поток будет загружать ready varible, см. False , а затем перейдите к установке, чтобы установить ее в True через Exchange , см. В том, что он все еще был false , а не выполнять, если blob. Обратный вызов C может быть вызван из второго потока, который будет загружать The Ready и увидеть значение True и выполнить блок if (завершение API C).
Насколько я могу увидеть, чтобы сделать просто обмен , но оба потока будут выполнять обмен . С опцией загрузка , за которым следует Exchange : обычно будет нагрузка и Exchange из одного потока и только нагрузку от другого (хотя это может быть так, что оба потока для загрузки и Exchange ).

Подробнее здесь: https://stackoverflow.com/questions/797 ... atomicbool
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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