Изменения документа Примитивы синхронизации
Редактировал(а) Alexandr Fokin 2023/10/09 10:03
<
>
отредактировано Alexandr Fokin
на 2023/01/12 13:51
на 2023/01/12 13:51
отредактировано Alexandr Fokin
на 2022/10/04 17:44
на 2022/10/04 17:44
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Родительский документ
-
... ... @@ -1,1 +1,1 @@ 1 -Разработка.NET.C#.Многопоточность и асинхронность.WebHome1 +Разработка.NET.C#.Многопоточность.WebHome - Содержимое
-
... ... @@ -1,4 +1,4 @@ 1 -=== Типы примитивов === 1 +=== Типы примитивов. === 2 2 3 3 |Конструкции пользовательского режима| 4 4 |Конструкции режима ядра| ... ... @@ -6,47 +6,25 @@ 6 6 7 7 ---- 8 8 9 -=== Некоторые примитивы синхронизации === 9 +=== Некоторые примитивы синхронизации === 10 10 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" %)Предоставляет набор некоторых операций, гарантирующих атомарность выполнения. 22 - 23 23 | | 24 -|Monitor|((( 25 - Реализуют идею критической секции. Ограничивает степень параллелизма на секциях, находящихся после Monitor.Enter, одним потоком. 12 +|Monitor и конструкция Lock|((( 13 +Реализуют идею критической секции: то есть код, написанный между вызовами Monitor.Enter, Monitor.Exit на одном ресурсе может быть выполнен в один момент времени лишь одним потоком. 14 + 15 +Оператор lock оберткой над Enter/Exit обернутых в try-finally. 26 26 ))) 27 -|Lock|Оператор lock является оберткой над классом Monitor, его операциями Enter/Exit, обернутыми в try-finally. 28 -|Semaphore 29 -SemaphoreSlim|Семафоры позволяют ограничить доступ выполнения кода определенным количеством потоков. 17 +|Semaphore|Семафоры позволяют ограничить доступ выполнения кода определенным количеством потоков. 30 30 |Mutex|Используется для синхронизации на уровне операционной системы. 31 31 Может использоваться несколькими приложениями в рамках одной ОС. 32 32 |ReaderWriterLock 33 -ReaderWriterLockSlim|Позволяет ограничить параллелизм либо 1 писателем, либо многими читателями. 34 -|AutoResetEvent 35 -ManualResetEven|Имеет 2 состояния (взведен и не взведен). 36 -Позволяет ожидать взведенного состояния. 37 -Содержит методы для взведения. 38 -|CountdownEvent|При инициализации задается значение счетчика. 39 -Позволяет ожидать, когда значение счетчика будет равно 0. 40 -Метод уменьшающий счетчик. 41 -|Spin*| 21 +ReaderWriterLockSlim|Либо много потоков читает, либо 1 поток пишет. 22 +| | 42 42 43 43 ---- 44 44 45 - ===Материалы===26 +Материалы: 46 46 47 -* [[Блокировки>>doc:Архитектура и модели.Блокировки.WebHome]] 48 -* Общие сведения о примитивах синхронизации 49 -[[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]] 50 50 * .NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1 51 51 [[https:~~/~~/habr.com/ru/post/452094>>https://habr.com/ru/post/452094]] 52 52 * .NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 2