，从而导致堆栈（A→C）。 比较并交换成功将“ head”与“ B”交换，结果是堆栈现在包含垃圾数据（指向已经被释放的元素“ B”的指针）。 此外，任何包含以下形式代码的无锁算法 冒险指针可用于同时解决这两个问题。 在使用冒险指针的系统中，每个线程都保留一个冒险指针的列表 ，这些指针指示该线程当前正在访问的节点。 （在许多系统中，此“列表”可能只限于一个 或两个元素。 ）冒险指针列表上的节点不得被任何其他线程修改或释放。 当线程希望删除一个节点时，它将其放置在“稍后释放”的节点列表上，但实际上直到其