Здравствуйте, pif_pif, Вы писали:
_>Насколько я понял код, dequeue_pos_ и enqueue_pos_ двигаются в одну сторону по buffer_ и нигде нет проверки того, что они не совпали (или dequeue_pos_ > enqueue_pos_). Parallel Inspector совершенно прав, что между enquee и dequee существует data race — из обеих функции есть несинхронизированный доступ к buffer_. Следовательно, мы можем вынимать из очереди несуществующие элементы, которые не были поставлены в очередь. Вы уверены, что такая очередь востребована?
Разобрался в коде, дезавуирую "мы можем вынимать из очереди несуществующие элементы, которые не были поставлены в очередь". На счет датарейсов пока сказать не могу, продолжаю анализировать.