Что означает «чтение» с точки зрения памяти компьютера? - PullRequest
0 голосов
/ 23 сентября 2010

Я возиться с несколькими потоками, обращающимися к ресурсу (возможно, к памяти). Что означает «чтение» в этом контексте?

Любые руководства будут полезны ... Google не дал мне хороших результатов.

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

Я могу придумать несколько возможных значений для «повторного чтения». Вот наиболее вероятный; в многопоточной среде многое может произойти между вашим потоком, считывающим значение из памяти и записывающим измененное значение обратно в эту память. Простой, но эффективный способ обнаружения изменений - просто снова получить значение из памяти непосредственно перед записью, и если оно изменилось по сравнению со значением, с которого вы начали, вы знаете, что кто-то другой изменил его во время работы.

«Чтение» также может означать «повторяемые операции чтения», в которых используется механизм блокировки, чтобы гарантировать, что в рамках атомарного набора операций только поток, получивший блокировку ресурса, может читать ИЛИ записывать в это, гарантируя, что никакой другой поток не может изменить значение по сравнению с тем, что ожидалось бы для задачи, если бы он выполнялся однопоточным. Таким образом, поток не должен обнаруживать внешние изменения; механизм блокировки предотвращает подобные вещи.

1 голос
/ 23 сентября 2010

Когда я сталкиваюсь с этим термином, обычно это происходит в контексте записи значения в регистр или область памяти, к которой также может обращаться другое программное или аппаратное обеспечение.Чтобы проверить, изменил ли это кто-то другой, вы можете сохранить личную копию записанных вами данных и через некоторое время прочитать этот общий регистр или ячейку памяти, чтобы сравнить текущее значение с сохраненной частной копией.Это «обратная связь».

...