История изменений
Исправление Vit, (текущая версия) :
передача данных из обработчика в контекст тредов разруливается только функциями очереди, что запрещают/разрешают прерывания внутри себя. обычные правильные очереди для межтредового взаимодействия этого делать не должны.
Объяснить можешь? Я серьезно. Вот если бы писали в одну переменую - тогда как-то понять можно. Но ведь в очереди каждый работает со своим куском памяти, и они никогда не пересекутся, если запас по длине достаточный.
Правда тут неявно используется что апдейт int32 атомарный (он может быть старый, но не может быть поломан). Поэтому вычисляемая дельта между головой и хвостом всегда корректна. Вроде проблема может быть только если счетчик запишется в память быстрее сообщения. Но не знаю, возможно ли так.
Исходная версия Vit, :
передача данных из обработчика в контекст тредов разруливается только функциями очереди, что запрещают/разрешают прерывания внутри себя. обычные правильные очереди для межтредового взаимодействия этого делать не должны.
Объяснить можешь? Я серьезно. Вот если бы писали в одну переменую - тогда как-то понять можно. Но ведь в очереди каждый работает со своим куском памяти, и они никогда не пересекутся, если запас по длине достаточный.
Правда тут неявно используется что апдейт int32 атомарный (он может быть старый, но не может быть поломан). Поэтому вычисляемая дельта между головой и хвостом всегда корректна.