Изменения документа ConcurrentDictionary
Редактировал(а) Alexandr Fokin 2023/02/16 01:41
<
>
отредактировано Alexandr Fokin
на 2022/10/04 17:38
на 2022/10/04 17:38
отредактировано Alexandr Fokin
на 2023/02/15 16:41
на 2023/02/15 16:41
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Родительский документ
-
... ... @@ -1,1 +1,1 @@ 1 -Разработка.NET.C#.Коллекции.Concurrent.WebHome 1 +Разработка.NET.C#.Коллекции.System\. Collections\. Concurrent.WebHome - Содержимое
-
... ... @@ -23,11 +23,13 @@ 23 23 24 24 **Итог:** 25 25 26 -Ни вызов AddOrUpdate, ни начало выполнения конкретного делегата (AddAction/UpdateAction) само по себе не препятствует изменению значения (по ключу) из других потоков (пока происходит исполнение делегата в текущем потоке). Т.е. не происходит пессимистичнойблокировки.26 +Ни вызов AddOrUpdate, ни начало выполнения конкретного делегата (AddAction/UpdateAction) само по себе не препятствует изменению значения (по ключу) из других потоков (пока происходит исполнение делегата в текущем потоке). Т.е. не происходит [[Пессимистичная блокировка>>doc:Архитектура и модели.Блокировки.Пессимистичная блокировка.WebHome]]. 27 27 28 -По сути мы получаем __оптимистичнуюблокировку__. В случае неудачи которой, повторно вызывается действие обработки (AddAction/UpdateAction) для измененного значения по указанному ключу.28 +По сути мы получаем [[Оптимистичная блокировка>>doc:Архитектура и модели.Блокировки.Оптимистичная блокировка.WebHome]]. В случае неудачи которой, повторно вызывается действие обработки (AddAction/UpdateAction) для измененного значения по указанному ключу. 29 29 Критерием сравнения блокировки является [[Equals>>Разработка.NET.C#.Object.Equals.WebHome]]. В некоторых ситуациях может иметь смысл перегрузка [[Equals>>Разработка.NET.C#.Object.Equals.WebHome]] на сравнение по: (1 [[ReferenceEquals>>Разработка.NET.C#.Object.ReferenceEquals.WebHome]] / 2 VersionProperty / 3 TimeStampProperty) как альтернатива сравнению фактических данных. 30 30 31 +Также мы приходим к факту, что во многих случаях TValue рекомендуется делать иммутабельным. 32 + 31 31 ---- 32 32 33 33 Для хранения данных TValue, вычисление значений которых занимает много времени, можно хранить Lazy<TValue> или же Task<TValue>. ... ... @@ -43,12 +43,39 @@ 43 43 //Дополнение: В некоторых случаях может иметь смысл создание собственной обертки над коллекции и ведения в ней собственного счетчика размера. 44 44 Контроль интерфейса обертки позволит четко отслеживать события Добавления/Удаления, для управления счетчиком можно использовать Interlocked операции.// 45 45 48 +Concurrency структуры в .net. ConcurrentDictionary изнутри 49 +[[https:~~/~~/habr.com/ru/post/245727/>>https://habr.com/ru/post/245727/]] 50 + 46 46 Под капотом у Dictionary и ConcurrentDictionary 47 47 [[https:~~/~~/habr.com/ru/post/198104/>>https://habr.com/ru/post/198104/]] 48 48 49 -[[Dictionary>>Разработка.NET.C#.Коллекции.Generic.Dictionary.WebHome]] 54 +[[Dictionary>>Разработка.NET.C#.Коллекции.System\. Collections\. Generic.Dictionary.WebHome]] 50 50 51 51 ---- 52 52 53 53 DotNext | Антон Нечуговских — Как мы написали свой lock-free dictionary 54 54 [[https:~~/~~/www.youtube.com/watch?v=Vs7qp8FNURo>>https://www.youtube.com/watch?v=Vs7qp8FNURo]] 60 + 61 +---- 62 + 63 +==== Внутренние ссылки: ==== 64 + 65 +====== Дочерние страницы: ====== 66 + 67 +{{children/}} 68 + 69 +====== Обратные ссылки: ====== 70 + 71 +{{velocity}} 72 +#set ($links = $doc.getBacklinks()) 73 +#if ($links.size() > 0) 74 + #foreach ($docname in $links) 75 + #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument()) 76 + * [[$escapetool.xml($rdoc.fullName)]] 77 + #end 78 +#else 79 + No back links for this page! 80 +#end 81 +{{/velocity}} 82 + 83 +----