Wiki에 따르면, CAS는 다음과 같이 수행어떻게 CAS 지침은 보장하지 자성
function cas(p : pointer to int, old : int, new : int) returns bool {
if *p ≠ old {
return false
}
*p ← new
return true
}
글쎄, 나를 위해 것을 여러 프로세서가 같은 인수 CAS 명령을 실행하려고 할 경우가있을 수 있음 동시에 여러 번의 쓰기 시도가 있으므로 어쨌든 그렇게하는 것이 안전하지 않습니다.
어디서 잘못 되었나요?
동시에 여러 번 기록한 사람은 누가 이겼는지 분명하지 않은 한 문제가되지 않습니다. 안전을 위해 추가적인 처리가 필요한 [ABA 문제] (https://en.m.wikipedia.org/wiki/ABA_problem)를 생각할 수도 있습니다. 그러나 int의 경우에는 문제가되지 않습니다. – Voo
@Voo "동시에 여러 번 쓰는 것이 문제가되지 않습니다."- 확실합니까? 예를 들어, x86은 정렬되지 않은 DWORD에 대한 쓰기의 원자 성을 보장하지 않기 때문에 안전하지 않다고 생각했습니다. – FrozenHeart