|
|
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Да, BrainMM использует стек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 22:21:14 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUРебята, потестируйте, пожалуйста, пример выше У меня Exception не воспроизводится (i3-6100U) Если воспроизведётся - давайте подумаем, почему kealon(Ruslan), А мой тест у тебя проходит?повторяется уже на 2-х потоках (так что по идее у тебя должен ловиться) либо зависает Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 22:26:39 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
У кого идея сценария, при котором может возникнуть ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 22:44:39 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, у меня идея не пытаться работать с данными по инвалидным адресам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 23:17:47 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 23:24:18 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Адреса валидные Данные невалидны Даже если взять стек (псевдокод): Код: pascal 1. 2. 3. 4. 5. 6. 7. Даже в случае стека ты не можешь однозначно судить, внутри Value значение Next валидное, или это мусор Value корректный только в том случае, если CAS прошёл успешно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 23:57:47 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Там нет очереди Да и смысл Ты здесь найди ошибку :). А то будешь всё время подсматривать у других :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 00:01:29 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUАдреса валидные Данные невалидны Адрес перестает быть валидным, как только ты отдал его менеджеру памяти. Это уже не твой адрес, это его адрес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 09:36:40 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUkealon(Ruslan), Там нет очереди Да и смысл Ты здесь найди ошибку :). А то будешь всё время подсматривать у других :) ошибка у тебя уже есть - 20937825 я уже прошёл твой этап - и поискал уже прилично в своём коде, потому и говорю тебе про ошибки в твоём коде, которые ты упорно не признаёшь. красной тряпкой служат такие вещи: IntelockedExchange IsEmpty и похожие на них Я плохой учитель, я не могу на пальцах объяснить почему так, это наверное что-то должно сдвинуться у обучаемого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 09:49:24 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Существуют разные теории, как работать с памятью, чтобы при обращении по адресу не возник AV. Сейчас сделан общий пул в зависимости от размера. Ранее выделенные объекты больше не возвращаются менеджеру памяти. Фактически есть стек наших объектов и в Next хранится указатель на следующий объект. И да, он может быть равен nil. Если Head успели удалить, а я считаю Next валидным - то AtomicCmpExchange не пройдёт Если же Next равен nil - то всё равно значение (сам указатель) не должен быть равен Tail ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 09:59:39 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), То что ты приводишь - это предположения Озвучь сценарий, при котором возможна некорректная работа алгоритма Это и будет весомым аргументом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 10:02:04 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUkealon(Ruslan), То что ты приводишь - это предположения Озвучь сценарий, при котором возможна некорректная работа алгоритма Это и будет весомым аргументом по простому, по красным тряпкам Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: pascal 1. 2. 3. 4. так доступно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 10:24:34 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), > приехал, твоя очередь разорвана, когда она восстановитcя - вопрос Да, очередь разорвана Потому что мы имеем не с одним указателем, а сразу с двумя В рамках lock-free иначе ты не сделаешь, в любом случае будет некое промежуточное состояние, которое будет тормозить либо извлечение, либо добавление > if (Tail.Empty) then // пока это проверяешь состояние может стать другим, т.е. играешь в теорию вероятности. Не интересно состояние, которое будет потом В любом случае очередь разорвана и мы должны восстановить связи Tail в данном случае это узел, который был до Enqueue И либо в его Next мы прописываем узел, либо инициализируем FHead ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 10:34:12 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
"Среди кустарей с мотором, которыми изобиловал Старгород, он был самым непроворным и наиболее часто попадавшим впросак. Причиной к этому служила его чрезмерно кипучая натура. Это был кипучий лентяй. Он постоянно пенился. В собственной его мастерской, помещавшейся во втором дворе дома № 7 по Перелешинскому переулку, застать его было невозможно. Потухший переносной горн сиротливо стоял посреди каменного сарая, по углам которого были навалены проколотые камеры, рваные протекторы «Треугольник», рыжие замки, такие огромные, что ими можно было запирать города, мятые баки для горючего с надписями «Indian» и «Wanderer», детская рессорная колясочка, навеки заглохшая динамка, гнилые сыромятные ремни, масляная пакля, стертая наждачная бумага, австрийский шт ык и множество рваной, гнутой и давленой дряни. Заказчики не находили Виктора Михайловича. Виктор Михайлович уже где-то распоряжался. Ему было не до работы. Он не мог видеть спокойно въезжающего в свой или чужой двор ломовика с кладью. Полесов сейчас же выходил во двор и, сложив руки на спине, презрительно наблюдал за действиями возчика. Наконец сердце его не выдерживало. — Кто же так заезжает? — кричал он, ужасаясь. — Заворачивай! Испуганный возчик заворачивал. — Куда ж ты заворачиваешь, морда?! — страдал Виктор Михайлович, налетая на лошадь. — Надавали бы тебе в старое время пощечин, тогда бы заворачивал! Покомандовавши так с полчаса, Полесов собирался было уже возвратиться в мастерскую, где ждал его непочиненный велосипедный насос, но тут спокойная жизнь города обычно вновь нарушалась каким-нибудь недоразумением. То на улице сцеплялись осями телеги, и Виктор Михайлович указывал, как лучше всего и быстрее их расцепить; то меняли телеграфный столб, и Полесов проверял его перпендикулярность к земле собственным, специально вынесенным из мастерской отвесом; то, наконец, устраивалось общее собрание жильцов. Тогда Виктор Михайлович стоял посреди двора и созывал жильцов ударами в железную доску; но на самом собрании ему не удавалось побывать. Проезжал пожарный обоз, и Полесов, взволнованный звуками трубы и испепеляемый огнем беспокойства, бежал за колесницами." Не могу удержаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 10:37:00 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
schi, Забанить бы тебя за офтоп :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 11:06:06 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUkealon(Ruslan), > приехал, твоя очередь разорвана, когда она восстановитcя - вопрос Да, очередь разорвана Потому что мы имеем не с одним указателем, а сразу с двумя В рамках lock-free иначе ты не сделаешь, в любом случае будет некое промежуточное состояние, которое будет тормозить либо извлечение, либо добавление Это не особенность lock-free, это особенность твоего алгоритма. С такой "гарантией" очередь нафиг не нужна - 20937825 . То что ты не знаешь как это сделать, не значит, что это невозможно. SOFT FOR YOU > if (Tail.Empty) then // пока это проверяешь состояние может стать другим, т.е. играешь в теорию вероятности. Не интересно состояние, которое будет потом В любом случае очередь разорвана и мы должны восстановить связи Tail в данном случае это узел, который был до Enqueue И либо в его Next мы прописываем узел, либо инициализируем FHeadс lock-free не бывает неважного, просто пока ты не знаешь где неправ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 11:38:12 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Давай меньше флуда, больше дела Опиши сценарий, при котором может возникнуть ошибка К примеру я тебе привожу участки кода, где производится ожидание. Ожидание - не возвращает False Код: 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. И да. Будь другом, приведи пример очереди без промежуточных ожиданий. К примеру реализация Otl полна ожидающих стейтов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 12:04:27 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Запусти, пожалуйста, свой тест с таким классом: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Хочу убедиться, что проблема не в TSyncPointer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2017, 01:40:49 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
Мы тут нашли одну ошибку. Когда счётчик FHead не инкрементировался Сейчас потестируйте, пожалуйста, пример килона https://bitbucket.org/d-mozulyov/lockfree/src ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 17:47:44 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, читаю я эту ветку и вспоминаю твой менеджер памяти. История повторяется один-в-один ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 18:19:46 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
asutp2, За тем лишь исключением, что BrainMM уже юзают, а лок фри ещё нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 21:12:38 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUBrainMM уже юзаютЧто, прям в продакшене? Я бы поостерегся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 21:30:30 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
white_nigger, Ну на однопоточных то он не сбоит. Почему бы нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 21:34:55 |
|
||
|
Lock-free: Доведём очередь до ума
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUНу на однопоточных то он не сбоит. Почему бы нет Так на одноточке от него проку нет, даже по твоим замерам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 21:39:12 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39549952&tid=2041445]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
90ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 451ms |

| 0 / 0 |
