gpt4 book ai didi

c - 为什么 CompareAndSwap 比 TestAndSet 更强大?

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:31 25 4
gpt4 key购买 nike

请考虑以下 CompareAndSwap 代码,让我知道为什么这个原子指令比原子 TestAndSet 更强大,因为它是一个互斥原语?

char CompareAndSwap(int *ptr, int old, int new) {
unsigned char ret;
// Note that sete sets a ’byte’ not the word
__asm__ __volatile__ (
" lock\n"
" cmpxchgl %2,%1\n"
" sete %0\n"
: "=q" (ret), "=m" (*ptr)
: "r" (new), "m" (*ptr), "a" (old)
: "memory");
return ret;
}

最佳答案

test-and-set 修改内存位置的内容并将其旧值作为单个原子操作返回。

比较和交换以原子方式比较内存位置的内容与给定值,并且仅当它们相同时,才将该内存位置的内容修改为给定的新值。

关于c - 为什么 CompareAndSwap 比 TestAndSet 更强大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19628021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com