Рассмотрим следующий сценарий с Open MP:
У нас есть указатель A
, указывающий на очень большой буфер в памяти, и у нас есть несколько потоков, один поток (назовем его потоком №1) продолжает обновлять содержимое в A
, в то время как другой поток, основываясь на сигналах, контролируемых №1, обрабатывает данные хранится в A
.
Какой самый быстрый способ обеспечить (при условии, что сигнал, сообщающий другим потокам о правильном времени для копирования A
, является атомарным, поэтому там нет условий гонки):
Потоки, которые обрабатывают данные, всегда будут использовать обновленные данные (например, нет риска кэширования некоторых данных в регистрах и т. д.).
Хорошее исполнение.