|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Roman MejtesDima T, В List<T> для получения элемента коллекции по индексу требует O(1), а у LinkedList O(n). Вставка в массив это часть алгоритма и она входит в (n), я пренебрегаю данный работой и считаю её за N. То есть на требования задачи это не влияет Входящий поток изменений будет включать вставки, удаления и обновления вперемешку. Поэтому если выбрать массив, то его все время придется двигать, а не только вначале. Это выливается в линейную сложность. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 09:53 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
SergAShSortedSet<T> отсортирован по одному ключу. Чтоб найти там элемент по другому ключу нужен полный перебор. можно использовать несколько SortedSet, по одному на каждый ключ. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 10:07 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Dima TSergAShSortedSet<T> отсортирован по одному ключу. Чтоб найти там элемент по другому ключу нужен полный перебор. можно использовать несколько SortedSet, по одному на каждый ключ.+1 Несколько SortedSet над одной коллекцией. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 10:29 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Petro123, лучше использовать MSSQL, там ACID реализован хорошо ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 13:01 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
А еще говорят можно CQRS + ES :):) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 13:03 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
ViPRosА еще говорят можно CQRS + ES :):) Рад, что такая хорошая технология сегодня на слуху :) Но это в свою очередь означает, что её будут применять там, где она совершенно не нужна, для небольших и односложных проектов, ожидается поток разочарования. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 13:55 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
hVostt, На слуху). Только тема про уровень программирования пониже). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 14:02 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
>SergASh, сегодня, 09:39 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1296919&msg=21524160][21524160] >...Но они идут не подряд, а случайно… Тогда рассмотри такой вариант: 1. Создаём одномерный массив aItem и nItem - текущий индекс записи след. Item 2. Создаём SortedDictionary<decimal, int> sdLevel = new SortedDictionary<decimal, int>(); 3. Создаём SortedDictionary<decimal, int> sdID = new SortedDictionary<decimal, int>(); При добавлении Item пишем в массив по индексу nItem, добавляем индекс в словари и nItem++ (а может быть второй словарь и не нужен). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 14:31 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
ВМоисеев, Класс не потокобезопасен. При допиле нужно ставит локи. А по ТЗ нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 14:38 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Petro123ВМоисеев, Класс не потокобезопасен. При допиле нужно ставит локи. А по ТЗ нельзя. В ТЗ про локи ничего не сказано, только в названии темы "без блокировок", я так понимаю это не из ТЗ, а хотелка ТС`а. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 14:48 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Dima T, Я привык в тему выносить главное)). Ок. Ждем автора. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 15:02 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
>Petro123, сегодня, 14:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1296919&msg=21525291][21525291] >Класс не потокобезопасен… Понимаю, но ранее предложил TC применить демфер в виде циклической очереди. Потоки писателя и читателя разделены. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 15:09 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Программирование всегда есть компромисс между желаниями и возможности. Возможно ТС стоит переформулировать задачу. Пускай Читатель запрашивает данные только тогда, когда транзакция Обновлятеля закончилась, а не по таймеру ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2018, 23:11 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Cat2Программирование всегда есть компромисс+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 07:04 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
>Cat2, вчера, 23:11 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1296919&msg=21529956] [21529956] >... Пускай Читатель запрашивает … Подобные конструкции позволяет писать/читать в любой момент разными потоками: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Пусть Обновлятель только пишет данные (Item), Читатель же обновляет структуры и представляет данные ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 09:55 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
ВМоисеев, Переименовал бы ты свои ИЗ и ИЧ и ХУ. Читать даже не хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 10:31 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
ВМоисеев, Да можно всякого напридумывать. Транзакционные механизмы известны. Было бы интересно услышать от ТС физический смысл задачи, тогда оценить риски получения неверной информации было бы легче. У меня впечатление, что это какие-то датчики и их считыватели SergAShДлина последовательности порядка 10^4. Длина последовательности в 10000 - это вообще тьфу, но для скорости Читателя можно разделить Item на два класса. В одном классе только ID и Level, а так же возможно, метка того, что объект находится в обработке. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 10:37 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
ИМХО не надо тут хитрые очереди изобретать, стандартная справится ConcurrentQueue ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 10:39 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Dima TИМХО не надо тут хитрые очереди изобретать, стандартная справится ConcurrentQueue Я тоже полагаю, что важность решения задачи сильно преувеличена ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 10:42 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Cat2метка того, что объект находится в обработке. Cat2 Код: c# 1.
почти субд изобрели)). Согласен что нужен выше уровень постановки. Удачи аффтару! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 10:54 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
Petro123, Я субдами думаю :) ================= Как убежденный агностик, я уверен, что нет общих решений, но в каждом конкретном случае можно и нужно находить наилучшее решение. Мир не познаваем, но можно и должно познать его отдельные законы и проявления ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 11:34 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
>Cat2, сегодня, 10:37 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1296919&msg=21530617][21530617] >...для скорости Читателя можно разделить Item на два класса Покажите, как сиё увеличивает скорострельность. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 11:53 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
если нужна система реального времени, без блокировок, то не надо забывать, что при работе GC для очистки 2 поколения, все остальные потоки тоже блокируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 12:17 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
>Dima T, сегодня, 10:39 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1296919&msg=21530625] [21530625] >ИМХО не надо тут хитрые очереди изобретать… На вкус, на цвет. Для ограниченных по времени экспериментов применял и примерно такую конструкцию: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
но это был не C# и не персоналка. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 12:25 |
|
Хитрая очередь с приоритетом без блокировок
|
|||
---|---|---|---|
#18+
ВМоисеев>Cat2, сегодня, 10:37 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1296919&msg=21530617][21530617] >...для скорости Читателя можно разделить Item на два класса Покажите, как сиё увеличивает скорострельность. Если последовательность Код: c# 1. 2. 3.
занимает килобайты, то быстрее пройти по тем объектам, которые изменились со времени прошлого изменения. Я же не задачу решаю, а показываю, как бы я решал ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2018, 13:45 |
|
|
start [/forum/topic.php?fid=20&startmsg=39666347&tid=1399316]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 122ms |
0 / 0 |