Определение понятия "примитив синхронизации" - PullRequest
27 голосов
/ 05 ноября 2011

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

Ответы [ 2 ]

38 голосов
/ 05 ноября 2011

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

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

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

5 голосов
/ 23 января 2018

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

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

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

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