Я читал статью "Простые, быстрые и практичные алгоритмы неблокирующих и блокирующих параллельных очередей" и я понял, что они предполагают, что компьютер реализует следующий псевдокод атомарно:
CAS(Q->Tail,tail,<next.ptr,next.count+1>)
Где Q->Tail и tail — это указатель и экземпляр структуры, содержащей указатель и счетчик.
Я знаю, что gcc предоставляет пару встроенных модулей для сравнения и замены отдельных слов в c. Однако возможно ли реализовать неблокирующее атомарное двойное сравнение и обмен из одиночного сравнения и обмена в c (используя Linux)? Является ли это правильным подходом к реализации псевдокода упомянутой статьи?
Tail
? Действительно ли это указатель в сочетании со счетчиком? - person jxh   schedule 23.08.2013