Изменения документа Примитивы синхронизации
Редактировал(а) Alexandr Fokin 2023/10/09 10:03
<
>
отредактировано Alexandr Fokin
на 2023/02/09 01:46
на 2023/02/09 01:46
отредактировано Alexandr Fokin
на 2023/02/09 01:15
на 2023/02/09 01:15
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -8,8 +8,8 @@ 8 8 9 9 === Некоторые примитивы синхронизации === 10 10 11 -|(% style="width: 608px" %)Конструкциипользовательского режима|(% style="width:892px" %)12 -|(% style="width: 608px" %)(((11 +|(% style="width:590px" %) |(% style="width:892px" %) 12 +|(% style="width:590px" %)((( 13 13 volatile 14 14 [[https:~~/~~/learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/volatile>>https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/volatile]] 15 15 [[https:~~/~~/learn.microsoft.com/ru-ru/dotnet/api/system.threading.volatile?view=net-5.0>>https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.volatile?view=net-5.0]] ... ... @@ -17,32 +17,29 @@ 17 17 1. Модификатор переменных, ограничивающий оптимизации компилятора c#. 18 18 1. Класс, содержащий методы, которые помимо операции чтения/записи накладывают ограничение (барьер), не позволяющее процессору менять порядок выполнения команд. 19 19 ))) 20 -|(% style="width: 608px" %)Interlocked20 +|(% style="width:590px" %)Interlocked 21 21 [[https:~~/~~/learn.microsoft.com/ru-ru/dotnet/api/system.threading.interlocked?view=net-5.0>>https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.interlocked?view=net-5.0]]|(% style="width:892px" %)Предоставляет набор некоторых операций, гарантирующих атомарность выполнения. 22 22 Являет предпочтительным по сравнению с явной блокировкой. 23 23 24 -|(% style="width:288px" %) |(% style="width:1207px" %) 25 -|(% style="width:288px" %)Monitor (Гибридные конструкции 26 -синхронизации потоков)|(% style="width:1207px" %)((( 27 -Реализуют идею критической секции. Ограничивает степень параллелизма на секциях, находящихся после Monitor.Enter, одним потоком. 24 +| | 25 +|Monitor|((( 26 + Реализуют идею критической секции. Ограничивает степень параллелизма на секциях, находящихся после Monitor.Enter, одним потоком. 28 28 ))) 29 -| (% style="width:288px" %)Lock|(% style="width:1207px" %)Оператор lock является оберткой над классом Monitor, его операциями Enter/Exit, обернутыми в try-finally.30 -| (% style="width:288px" %)Semaphore(Конструкции режима ядра)31 -SemaphoreSlim| (% style="width:1207px" %)Семафоры позволяют ограничить доступ выполнения кода определенным количеством потоков.32 -| (% style="width:288px" %)Mutex(Конструкции режима ядра)|(% style="width:1207px" %)Используется для синхронизации на уровне операционной системы.28 +|Lock|Оператор lock является оберткой над классом Monitor, его операциями Enter/Exit, обернутыми в try-finally. 29 +|Semaphore 30 +SemaphoreSlim|Семафоры позволяют ограничить доступ выполнения кода определенным количеством потоков. 31 +|Mutex|Используется для синхронизации на уровне операционной системы. 33 33 Может использоваться несколькими приложениями в рамках одной ОС. 34 -|(% style="width:288px" %)ReaderWriterLock 35 -ReaderWriterLockSlim (Гибридные конструкции 36 -синхронизации потоков)|(% style="width:1207px" %)Позволяет ограничить параллелизм либо 1 писателем, либо многими читателями. 37 -|(% style="width:288px" %)AutoResetEvent (Конструкции режима ядра) 38 -ManualResetEven (Конструкции режима ядра)|(% style="width:1207px" %)Имеет 2 состояния (взведен и не взведен). 33 +|ReaderWriterLock 34 +ReaderWriterLockSlim|Позволяет ограничить параллелизм либо 1 писателем, либо многими читателями. 35 +|AutoResetEvent 36 +ManualResetEven|Имеет 2 состояния (взведен и не взведен). 39 39 Позволяет ожидать взведенного состояния. 40 40 Содержит методы для взведения. 41 -|(% style="width:288px" %)CountdownEvent (Гибридные конструкции 42 -синхронизации потоков)|(% style="width:1207px" %)При инициализации задается значение счетчика. 39 +|CountdownEvent|При инициализации задается значение счетчика. 43 43 Позволяет ожидать, когда значение счетчика будет равно 0. 44 44 Метод уменьшающий счетчик. 45 -| (% style="width:288px" %)Spin*|(%style="width:1207px" %)42 +|Spin*| 46 46 47 47 ---- 48 48