Изменения документа Tools.Collections

Редактировал(а) Alexandr Fokin 2023/01/11 15:18

<
От версии < 10.11 >
отредактировано Alexandr Fokin
на 2022/10/04 17:25
К версии < 12.2 >
отредактировано Alexandr Fokin
на 2022/12/28 08:19
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -7,7 +7,7 @@
7 7  
8 8  ==== 1) LinkItemDictionary ====
9 9  
10 -Коллекция представляют из себя KeyValue хранилище, является потокобезопасным. (В основе лежит [[ConcurrentDictionary>>Разработка.NET.C#.Коллекции.Concurrent.ConcurrentDictionary.WebHome]], [[Удаление по условию>>Разработка.NET.C#.Коллекции.Concurrent.ConcurrentDictionary.Удаление по условию.WebHome]])
10 +Коллекция представляют из себя KeyValue хранилище, является потокобезопасным. (В основе лежит [[ConcurrentDictionary>>Разработка.NET.C#.Коллекции.System\. Collections\. Concurrent.ConcurrentDictionary.WebHome]], [[Удаление по условию>>Разработка.NET.C#.Коллекции.System\. Collections\. Concurrent.ConcurrentDictionary.Удаление по условию.WebHome]])
11 11  Для обеспечения оптимистичной блокировки в LinkStorage используется специальный item с полем Stamp, по которому проверяется не был ли изменен элемент во время операции.
12 12  
13 13  Интерфейс:
... ... @@ -19,16 +19,16 @@
19 19  |Func<ILinkItem<TKey, TData>, TData> updateFactory|фабрика для обновления существующего значения
20 20  )))|(% style="width:528px" %)Если по ключу нет записи, то
21 21   добавить запись
22 - счетчик записи = 1
22 + счетчик ссылок записи = 1
23 23   вызвать addFactory(если не null) и заполнить value.Data
24 24  Иначе если по ключу есть запись, то
25 - Увеличить счетчик на 1
25 + Увеличить счетчик ссылок на 1
26 26   вызвать updateFactory(если не null) и обновить value.Data
27 27  |RemoveLink|(% style="width:859px" %)(((
28 28  |TKey key|ключ
29 29  |Func<ILinkItem<TKey, TData>, TData> updateFactory|фабрика для обновления существующего значения
30 30  )))|(% style="width:528px" %)Вызвать updateFactory(если не null) и обновить value.Data
31 -Уменьшить счетчик на 1
31 +Уменьшить счетчик ссылок на 1
32 32  Если значение счетчика <= 0
33 33   То удалить запись
34 34  
... ... @@ -66,6 +66,8 @@
66 66  
67 67  Классы из Tools.Collections.Concurrent.AsyncBuffer.PriorityWrapper добавляют обертку над IConcurrentStore<T> и IConcurrentBuffer<T>, которая позволяет управлять приоритетами потребления элементов из буфера. По факту для каждого значения приоритета храниться свой собственный IConcurrentStore<T> (задается через конструктор), и элемент считывается из первого непустого IConcurrentStore<T> в порядке приоритета.
68 68  
69 +UDP: сейчас есть [[System. Threading. Channels>>doc:Разработка.NET.C#.System\. Threading\. Channels.WebHome]].
70 +
69 69  ----
70 70  
71 71