счетчик внутри данных узла вместо непосредственного хранения его в External_count ? Однако в коде, показанном в книге, хвост только загружается и сравнивается; Я не вижу никакой фактической модификации данных узла хвоста (включая мелиорацию).
В параллелизме C ++ в действии очередь без блокировки реализована с тройным подсчетом. Основная структура его узлов заключается в следующем: < /p> [code]template struct node; template struct counted_node { node *data; long external_count; }; template struct node { struct compressed_counter { unsigned long internal_counter : 62; unsigned long head_tail_counter : 2; }; std::atomic next; std::atomic internal_counter; std::atomic value; }; < /code> Структура двойного подсчета разработана как < /p> template struct node; template struct counted_node { node *data; long external_count; }; template struct node { counted_node next; std::atomic internal_count; std::shared_ptr value; }; [/code] Зачем положить голову /[code]tail[/code] счетчик внутри данных узла вместо непосредственного хранения его в External_count ? Однако в коде, показанном в книге, хвост только загружается и сравнивается; Я не вижу никакой фактической модификации данных узла хвоста (включая мелиорацию).