Я читал газету "Simple, fast, and practical non-blocking and blocking concurrent queue algorithms", и я понял, что они предполагают, что компьютер выполняет следующий псевдокод атомарен:Как реализовать двойное сравнение и обмен в C/Linux?
CAS(Q->Tail,tail,<next.ptr,next.count+1>)
Где Q-> Хвост и хвост указатель и экземпляр структуры, содержащий указатель и счетчик.
Я знаю, что gcc предоставляет пару встроенных модулей для сравнения и обмена одним словом в c. Однако возможно ли реализовать неблокирующий атомный двойной сопоставление и обмен из одного сравнения и свопинга в c (с использованием Linux)? Является ли это правильным подходом к реализации псевдокода ссылочной бумаги?
Поскольку я не собираюсь покупать бумагу, что такое 'Tail'? Это действительно указатель в сочетании со счетчиком? – jxh