Изменения документа Примитивы синхронизации

Редактировал(а) Alexandr Fokin 2023/10/09 10:03

<
От версии < 1.16 >
отредактировано Alexandr Fokin
на 2023/02/09 01:46
К версии < 1.14 >
отредактировано Alexandr Fokin
на 2023/02/09 01:15
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -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" %)Interlocked
20 +|(% 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