|
|
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUkealon(Ruslan), Да еклмн Где там ошибка?! не внемлишь же, уже говорил про эту ошибку вот тебе зависание: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 12:46 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
хотя нет вру, ожидание срабатывает непонятно как без ожидания проверить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 13:11 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), В Dequeue же просто вхолостую работает цикл, если Next не инициализирован ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 22:27 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, да заметил, 20968902 TestUG падает раз из 5-7 запусков, причём так же как и раньше - два потока для этого достаточно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 22:58 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), А идеи, как оно происходит - появились? Вообще, когда Enqueue есть, а Dequeue нет - это чистой воды потеря элемента. Мои тесты тоже иногда показывают, что теряют элемент. Уж не ABA ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 00:37 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
Добавил автотест, получил вот такую картину: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Т.е. потеряно сразу 4 элемента, идущих подряд. Точно ABA. Только где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 01:32 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUТ.е. потеряно сразу 4 элемента, идущих подряд. Точно ABA. Только где? не обязательно, проверь без переиспользования памяти, это исключит АБА ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 09:18 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Как это - без переиспользования памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 09:35 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUkealon(Ruslan), Как это - без переиспользования памяти?выделяешь большой блок и от него отщипываешь пока не закончится н-р на 100 млн элементов, твоей очереди на 10 секунд точно хватит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 09:52 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Можно в Dequeue нод не возвращать системе Если комп под рукой - посмотри, пожалуйста Я только к вечеру до компа дойду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 11:16 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUkealon(Ruslan), Можно в Dequeue нод не возвращать системе Если комп под рукой - посмотри, пожалуйста Я только к вечеру до компа дойду за 10 раз TestUG не повторился, скорее всего ABA выходит PS: около 10-11 млн/c держится - "менеджер памяти ноды" надо менять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 16:32 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), В коде есть возможность «эмулировать» очередь через стек И в стеке используется та же модель аллоцирования памяти. А именно free list - самый элементарный и быстродейственный вариант И стек не давал ошибок, не давал ABA. Следовательно, дело не в менеджменте памяти, а в самом алгоритме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 18:37 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, про менеджер был вывод, что он довольно медленный АБА конечно в алгоритме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 19:10 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Да быстрее вроде некуда. Стек и память никуда не удаляется А как «долгость» может инициировать ABA? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 20:34 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, это так, на заметку, с АБА это не связано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 21:22 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, небольшими оптимизациями удалось приблизиться к техническому пределу на 4-х потоках https://sourceforge.net/p/cl4fpc/code/HEAD/tree/Containers/lfqueues.pas Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. хз тока зачем это надо если критическая секция даст тоже самое. По идее дальше вся проблема в функции разгрузки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 08:43 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)хз тока зачем это надо если критическая секция даст тоже самоеlf-контейнеры (кроме прочих их достоинств и преимуществ) могут оказаться нужны когда контейнеров надо ахулиард и может оказаться нежелательным задействовать такую массу объектов синхронизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 09:59 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
vavankealon(Ruslan)хз тока зачем это надо если критическая секция даст тоже самоеlf-контейнеры (кроме прочих их достоинств и преимуществ) могут оказаться нужны когда контейнеров надо ахулиард и может оказаться нежелательным задействовать такую массу объектов синхронизациитут така вещь, что все эти оптимизации уже есть в критической секции и реальных обектов синхронизации не так много создаётся. Фактически, в большинстве случаев срабатывает обычный спин-лок. хотя как вариант возможно неплохое применение на обшаренной между процессами памяти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 10:38 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)все эти оптимизации уже есть в критической секциикрит. секция при всех ее прелестях вещь весьма виндовая а lf без мутексов и т.п. бывают кросс-платформенные kealon(Ruslan)реальных обектов синхронизации не так много создаётсяно создаться таки могут, а уж "если неприятность может случиться то она непременно случится" (С) kealon(Ruslan)Фактически, в большинстве случаев срабатывает обычный спин-локну пока contention/starvation не случатся вообще конкурентов у cs практически нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 11:10 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), А моя очередь разве не быстрее крит секции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 10:32 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
А вот это никто не смотрел? http://www.thedelphigeek.com/2010/02/dynamic-lock-free-queue-doing-it-right.html Ну это я так, на правах мимокрокодила :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 10:43 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39556628&tid=2041445]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 506ms |

| 0 / 0 |
