PSI*_*Alt 7 c++ multithreading mutex atomic lock-free
用这样的块替换互斥锁具有什么意义呢
void stack_push(stack* s, node* n)
{
node* head;
do
{
head = s->head;
n->next = head;
}
while ( ! atomic_compare_exchange(s->head, head, n));
}
Run Code Online (Sandbox Code Playgroud)
无法理解通过用这种原子替换来替换互斥锁可以获得什么好处?
小智 13
有许多优点;
它通常比互斥锁更快.话虽如此,您不能简单地用CAS替换所有互斥锁.单个CAS将在许多线程中安全地交换一个引用与另一个引用.
如果你有一个复合函数,其中一次写入依赖于另一次读取(例如),则需要一个互斥锁来确保原子性.