Подтвердить что ты не робот

Определение "примитива синхронизации"

Что означает термин примитив синхронизации? Например: мьютекс, критический раздел, ожидаемый таймер, событие, монитор, условная переменная, семафор. Все ли они являются примитивами синхронизации? Есть ли какие-либо другие примитивы синхронизации, которые я не перечислял? И действительно ли это вопросы?

4b9b3361

Ответ 1

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

Mutex, событие, условные переменные и семафоры - все примитивы синхронизации. Так что это общие и эксклюзивные блокировки. Обычно монитор считается высокоуровневым инструментом синхронизации. Это объект, который гарантирует взаимное исключение для его методов с использованием других примитивов синхронизации (обычно это эксклюзивные блокировки с переменными состояния для поддержки ожидания и сигнализации). В некоторых контекстах, когда монитор используется как строительный блок, он также считается примитивом синхронизации.

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

Ответ 2

Как было предложено @Loom, я добавляю этот список, предложенный Колумбийским университетом, в качестве ответа на ваш вопрос.

Также проверьте эту статью от Microsoft, датированную 03/2017 (у меня такое чувство, что она старше, но так же и статья из Колумбийского университета).

Из того, что я собрал, примитивы синхронизации не определены корректно, в том смысле, что их нет.