在pop()方法的49行 head.compareAndSet(ref,next,stamp,stamp+1); 如果cas失败,那么下面return ref.value返回的是什么?是指失败之后的老的head节点?还是被其他线程cas更新后的新的head节点?
我认为是被其他线程更新后新的head节点,因为ref是head.getReference的引用变量,实际值是head.getReference,而我看源码内部是一个pair,被volitai修饰,所以head.getReference会读到主存中的最新head值,那么ref.value就是最新的head值。但是我不明白,return 最新主存中的head是对的吗?还是我理解错了。。求指教。(cas成功时我能理解,返回当前要删除的旧head,新的head 指向 旧head的next。)