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

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

<
От версии < 1.14 >
отредактировано Alexandr Fokin
на 2023/02/09 01:15
К версии < 1.3 >
отредактировано Alexandr Fokin
на 2022/10/04 17:50
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Родительский документ
... ... @@ -1,1 +1,1 @@
1 -Разработка.NET.C#.Многопоточность и асинхронность.WebHome
1 +Разработка.NET.C#.Многопоточность.WebHome
Содержимое
... ... @@ -1,4 +1,4 @@
1 -=== Типы примитивов ===
1 +=== Типы примитивов. ===
2 2  
3 3  |Конструкции пользовательского режима|
4 4  |Конструкции режима ядра|
... ... @@ -18,36 +18,25 @@
18 18  1. Класс, содержащий методы, которые помимо операции чтения/записи накладывают ограничение (барьер), не позволяющее процессору менять порядок выполнения команд.
19 19  )))
20 20  |(% style="width:590px" %)Interlocked
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 -Являет предпочтительным по сравнению с явной блокировкой.
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" %)
23 23  
24 24  | |
25 -|Monitor|(((
26 - Реализуют идею критической секции. Ограничивает степень параллелизма на секциях, находящихся после Monitor.Enter, одним потоком.
24 +|Monitor и конструкция Lock|(((
25 +Реализуют идею критической секции: то есть код, написанный между вызовами Monitor.Enter, Monitor.Exit на одном ресурсе может быть выполнен в один момент времени лишь одним потоком.
26 +
27 +Оператор lock оберткой над Enter/Exit обернутых в try-finally.
27 27  )))
28 -|Lock|Оператор lock является оберткой над классом Monitor, его операциями Enter/Exit, обернутыми в try-finally.
29 -|Semaphore
30 -SemaphoreSlim|Семафоры позволяют ограничить доступ выполнения кода определенным количеством потоков.
29 +|Semaphore|Семафоры позволяют ограничить доступ выполнения кода определенным количеством потоков.
31 31  |Mutex|Используется для синхронизации на уровне операционной системы.
32 32  Может использоваться несколькими приложениями в рамках одной ОС.
33 33  |ReaderWriterLock
34 -ReaderWriterLockSlim|Позволяет ограничить параллелизм либо 1 писателем, либо многими читателями.
35 -|AutoResetEvent
36 -ManualResetEven|Имеет 2 состояния (взведен и не взведен).
37 -Позволяет ожидать взведенного состояния.
38 -Содержит методы для взведения.
39 -|CountdownEvent|При инициализации задается значение счетчика.
40 -Позволяет ожидать, когда значение счетчика будет равно 0.
41 -Метод уменьшающий счетчик.
42 -|Spin*|
33 +ReaderWriterLockSlim|Либо много потоков читает, либо 1 поток пишет.
34 +| |
43 43  
44 44  ----
45 45  
46 -=== Материалы ===
38 +Материалы:
47 47  
48 -* [[Блокировки>>doc:Архитектура и модели.Блокировки.WebHome]]
49 -* Общие сведения о примитивах синхронизации
50 -[[https:~~/~~/learn.microsoft.com/ru-ru/dotnet/standard/threading/overview-of-synchronization-primitives?source=recommendations>>https://learn.microsoft.com/ru-ru/dotnet/standard/threading/overview-of-synchronization-primitives?source=recommendations]]
51 51  * .NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1
52 52  [[https:~~/~~/habr.com/ru/post/452094>>https://habr.com/ru/post/452094]]
53 53  * .NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 2