4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 66: | Строка 66: | ||
'''Атомарные операции''' | '''Атомарные операции''' | ||
В большинстве параллельных решений задачи предполагается наличие архитектуры, в которой n процессов асинхронно общаются друг с другом посредством совместно используемых объектов. Все архитектуры поддерживают атомарные регистры, которые являются совместно используемыми объектами, поддерживающими атомарные операции чтения и записи. В литературе также рассматривается более слабое относительно атомарного регистра понятие безопасного регистра. При работе с безопасным регистром операция чтения, выполняемая не одновременно с операцией записи, возвращает корректное значение, но если операция чтения выполняется одновременно с некоторой операцией записи, она возвращает произвольное значение. Большинство современных архитектур также поддерживают некоторую форму атомарности, более сильную, чем простые операции чтения и записи. Современные атомарные операции имеют специальные названия. В частности, имеются | В большинстве параллельных решений задачи предполагается наличие архитектуры, в которой n процессов асинхронно общаются друг с другом посредством совместно используемых объектов. Все архитектуры поддерживают ''атомарные регистры'', которые являются совместно используемыми объектами, поддерживающими атомарные операции чтения и записи. В литературе также рассматривается более слабое относительно атомарного регистра понятие ''безопасного регистра''. При работе с безопасным регистром операция чтения, выполняемая не одновременно с операцией записи, возвращает корректное значение, но если операция чтения выполняется одновременно с некоторой операцией записи, она возвращает произвольное значение. Большинство современных архитектур также поддерживают некоторую форму атомарности, более сильную, чем простые операции чтения и записи. Современные атомарные операции имеют специальные названия. В частности, имеются следующие: | ||
• Проверка и установка: принимает совместно используемый регистр r и значение val. Значение val присваивается регистру r, а старое значение r возвращается. | • ''Проверка и установка'': принимает совместно используемый регистр r и значение val. Значение val присваивается регистру r, а старое значение r возвращается. | ||
• Перестановка: принимает совместно используемый регистр r и локальный регистр I и при помощи атомарной операции меняет их значения местами. | • ''Перестановка'': принимает совместно используемый регистр r и локальный регистр I и при помощи атомарной операции меняет их значения местами. | ||
• Выборка и приращение: принимает регистр r. Значение r увеличивается на 1, старое значение r возвращается. | • ''Выборка и приращение'': принимает регистр r. Значение r увеличивается на 1, старое значение r возвращается. | ||
• Сравнение и перестановка: принимает регистр r и два значения – новое и старое. Если текущее значение регистра r равно старому, то значением r становится новое и возвращается «true»; в противном случае значение r остается неизменным и возвращается «false». | • ''Сравнение и перестановка'': принимает регистр r и два значения – новое и старое. Если текущее значение регистра r равно старому, то значением r становится новое и возвращается «true»; в противном случае значение r остается неизменным и возвращается «false». | ||
правка