Частная копия данных из общего расположения - PullRequest
3 голосов
/ 15 февраля 2012

Я сейчас читаю Concurrent Programming on Windows Джо Даффи и натолкнулся на следующее утверждение:

Несколько потоков делают личные копии данных из общего расположения

Это утверждение было дано после примера, в котором Джо показал, как увеличение глобальной переменной из нескольких потоков может привести к непредсказуемым результатам, поскольку они могут перекрываться во времени.

Однако я по-прежнему скептически отношусь к этому утверждению, поскольку не существует такой вещи, как частная копия атомарного типа данных, которая сделала бы его неатомарным.

Так что, когда он говорит make private copies of data from a shared location, тогда это просто все неатомарные типы данных (пользовательские типы и т. Д.), Которые он имеет в виду, или я что-то пропустил?

1 Ответ

2 голосов
/ 23 февраля 2012

Поскольку у меня нет книги на руках, я могу только догадываться, что он говорит о том, как процессоры выполняют код.

Нет предела для передачи данных в регистр ЦП, поскольку это единственный способ, которым команда ЦП может получить к нему доступ. Таким образом, в этом смысле каждый раз, когда поток использует данные из общего расположения, должна быть сделана временная личная копия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...