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

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

<
От версии < 1.2 >
отредактировано Alexandr Fokin
на 2022/10/04 17:44
К версии < 1.5 >
отредактировано Alexandr Fokin
на 2022/10/04 17:59
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -6,24 +6,36 @@
6 6  
7 7  ----
8 8  
9 -=== Некоторые примитивы синхронизации ===
9 +=== Некоторые примитивы синхронизации ===
10 10  
11 -| |
12 -|Monitor и конструкция Lock|(((
13 -Реализуют идею критической секции: то есть код, написанный между вызовами Monitor.Enter, Monitor.Exit на одном ресурсе может быть выполнен в один момент времени лишь одним потоком.
11 +|(% style="width:590px" %) |(% style="width:892px" %)
12 +|(% style="width:590px" %)(((
13 +volatile
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 +[[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]]
16 +)))|(% style="width:892px" %)(((
17 +1. Модификатор переменных, ограничивающий оптимизации компилятора c#.
18 +1. Класс, содержащий методы, которые помимо операции чтения/записи накладывают ограничение (барьер), не позволяющее процессору менять порядок выполнения команд.
19 +)))
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" %)Предоставляет набор некоторых операций, гарантирующих атомарность выполнения.
14 14  
15 -Оператор lock оберткой над Enter/Exit обернутых в try-finally.
23 +| |
24 +|Monitor|(((
25 + Реализуют идею критической секции. Ограничивает степень параллелизма на секциях, находящихся после Monitor.Enter, одним потоком.
16 16  )))
17 -|Semaphore|Семафоры позволяют ограничить доступ выполнения кода определенным количеством потоков.
27 +|Lock|Оператор lock является оберткой над классом Monitor, его операциями Enter/Exit, обернутыми в try-finally.
28 +|Semaphore
29 +SemaphoreSlim|Семафоры позволяют ограничить доступ выполнения кода определенным количеством потоков.
18 18  |Mutex|Используется для синхронизации на уровне операционной системы.
19 19  Может использоваться несколькими приложениями в рамках одной ОС.
20 20  |ReaderWriterLock
21 -ReaderWriterLockSlim|Либо много потоков читает, либо 1 поток пишет.
22 -| |
33 +ReaderWriterLockSlim|Позволяет ограничить параллелизм либо 1 писателем, либо многими читателями.
34 +|Spin*|
23 23  
24 24  ----
25 25  
26 -Материалы:
38 +=== Материалы ===
27 27  
28 28  * .NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1
29 29  [[https:~~/~~/habr.com/ru/post/452094>>https://habr.com/ru/post/452094]]