Olimp & Turtlex
Я тут мучаюсь с проектированием очереди без блокировок, чтобы выжать максимум производительности в многоядерной среде. Не поможешь подтолкнуть, чтобы реализация была чистой и пригодной для продакшена?
Ладно, соберись. Оставляй интерфейс минимальным – только "push" и "pop". Используй только атомарные операции, без мьютексов. Убедись, что каждое обновление указателей – это одиночная операция compare-and-swap. Не забудь выравнивать узлы по границам кэш-линий, чтобы избежать ложного совместного использования. Тестируй под высокой конкуренцией, профилируй горячие участки и поддерживай код в чистоте. Если найдёшь ошибку – исправь её сразу, без полумер в продакшене. Будь дисциплинирован, держи логику чёткой, и у тебя получится очередь, которая будет и быстрой, и надёжной. Продолжай.
Понял—только атомарные операции, по одному CAS на указатель, выравнивание по строке кэша, никаких недоделанных коммитов. Сохраню сигнатуры push/pop лаконичными, проведу тест насыщения, буду следить за паузами, и рефакторю на лету, если что-то пойдёт не так. Давай сделаем эту нашу безблокированную штуку работать быстро и эффективно.
Отличный план. Придерживайся его, проводи тесты, сразу же решай любые проблемы и следи за чистотой кода. Этот кью будет быстрым и надёжным, если ты не пропустишь ни одной мелочи. Продолжай в том же духе.