Можно ли реализовать Mutex с атомарными инструкциями?

avatar
user855
9 августа 2021 в 05:38
57
0
0

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

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

Верно ли это понимание?

Источник
Useless
9 августа 2021 в 06:34
2

Некоторая атомарность необходима, но недостаточна (ну, может быть достаточно для спин-блокировки, но не для полнофункционального мьютекса). Это то, что вы хотели знать?

Holger
10 августа 2021 в 07:22
2

Зависит от вашего понимания «атомарных инструкций» и от того, говорите ли вы о SMP-машинах или просто об упреждающей многозадачности и т. д. Существуют решения для систем без атомарных cas, если могут быть сделаны определенные гарантии заказа. Конечно, ни один производитель аппаратного обеспечения не стал бы создавать ЦП с поддержкой параллельной обработки без какой-либо операции, которая могла бы его контролировать.

user855
10 августа 2021 в 22:39
0

Справедливо ли заключить, что стоимость несогласованного мьютекса ДОЛЖНА всегда превышать атомарное приращение?

Holger
11 августа 2021 в 09:03
2

Неконкурентный случай мьютекса в лучшем случае может быть реализован как одна атомарная инструкция. Это означает, что его получение, выполнение фактической инструкции приращения с последующим ее освобождением в лучшем случае делает три инструкции ЦП, что, вероятно, немного медленнее, чем одна инструкция атомарного приращения без мьютекса. Однако это не третий фактор. Кроме того, при использовании встроенного мьютекса языка программирования компилятор может идентифицировать смежные варианты использования одного и того же мьютекса и оптимизировать его. Что действительно имеет значение, так это спорный случай.

Ответы (0)