원자 적으로 수행 할 수 있습니까? 원자 저장소가 XCHG [addr], EAX
으로 수행해야합니다원자 적으로로드하여 X86 프로세서에 저장할 수 있습니까?
void load_and_store(int* dst, int* src) {
int data = *src;
*dst = data;
}
경우, 내가 먼저 EAX
로 데이터를로드 할 것입니다. 그런 다음로드 및 저장은 원자 적이지 않습니다.
gcc 원자 확장은 void __atomic_store (type *ptr, type *val, int memmodel)
이며 원자 적으로로드 및 저장을 모두 수행 할 수있는 것처럼 보입니다.
'* dst = * src; '와 다른가요? –
* dst = * src는 원 자성이 아닙니다. – woodings
@ MarkB 아마도 내 질문은 약간 혼란 스러웠습니다. 원자적인 방식으로 C++의 함수와 같은 일을하는 CPU 명령어가 있는지 궁금합니다. – woodings