почему использовать memory_order_seq_cst для настройки флага остановки, если проверяется с помощью memory_order_relaxed? Включение:
Основные потоки нереста { // выполнять задачи }
Саттер утверждает, что с использованием Memory_order_relaxed для проверки флага является приемлемым из -за минимального воздействия на задержку остановки потока. Однако причина использования memory_order_seq_cst для настройки флага «Стоп» остается неясной.
while (!stop.load(std::memory_order_relaxed)) { // Perform tasks }анализа:
. Наблюдение за изменениями в остановке или Flags Keep_running имеет решающее значение. Однако в стандарте ISO C не указывается время видимости хранилища или факторы, влияющие на его. Реализации обязаны только обеспечить видимость в конечном периоде. Реализации C реального мира используют механизмы когерентности аппаратного кэша, обычно приводящие к низкой задержке (десятки наносекунд) для видимости хранилища.
ни SEQ_CST, ни расслабленное приказы памяти ускоряют видимость хранилища; Они просто контролируют поведение последующих операций относительно магазина или нагрузки. Более сильные заказы не ускоряют события, но задерживают другие операции, пока не будет поддержан указанный порядок. ]
расслабленная видимость и когерентность кеша с аппаратным кэшем:на реальном оборудовании с согласованностью кэша, память, не улучшают время видимости хранилища; Они управляют исключительно способностью последующих операций становиться глобально видимыми перед обязательством хранить.
. false.
избегание ненужного выполнения инструкции, особенно на ISA, где нагрузки приобретения или seq_cst требуют дополнительных инструкций (например, Armv7 dmb ish).
заключение:
в этом сценарии. Хранив флаг остановки. MEARY_ORDER_SEQ_CST не требуется для улучшения времени видимости хранилища. Вместо этого он используется для обеспечения желаемого упорядочения последующих операций и избежать проблем с одновременными авторами.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3