为了账号安全,请及时绑定邮箱和手机立即绑定

如何用c ++ 11 CAS实现ABA计数器?

如何用c ++ 11 CAS实现ABA计数器?

C++
不负相思意 2019-08-23 09:43:18
如何用c ++ 11 CAS实现ABA计数器?我正在实现一个基于此算法的无锁队列,该算法使用计数器来解决ABA问题。但我不知道如何用c ++ 11 CAS实现这个计数器。例如,从算法:E9:    if CAS(&tail.ptr->next, next, <node, next.count+1>)它是一个原子操作,意思是如果tail.ptr->next等于next,则tail.ptr->next指向node并同时(原子地)产生next.count+1。但是,使用C ++ 11 CAS,我只能实现:std::atomic_compare_exchange_weak(&tail.ptr->next, next, node);这不可能next.count+1同时发生。

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号