잠금 없는 지원이 부족한 C의 std::atomic
원자 이중 연산 x86_64
x86_64의 SSE/AVX 벡터 연산
C에서는 현재 원자적 AVX/SSE 벡터 연산에 대한 지원이 부족하지만 방법은 없습니다. 전체에 걸쳐 128b 또는 256b 캐시 라인의 원자적 전송을 보장합니다.
그러나 정렬된 double의 공유 배열에서 벡터 로드/저장을 사용할 때 찢어짐 위험을 최소화하기 위해 특정 예방 조치를 취할 수 있습니다.
Atomic 16B Load
Atomic 16B Store 및 RMW
원자적 연산 8B 반쪽을 갖는 16B 객체
컴파일러 및 원자적 연산
컴파일러가 항상 최적의 결과를 생성하는 것은 아닙니다. 원자적 연산을 위한 어셈블러 코드. 예를 들어 XMM과 이중 레지스터 간의 직접적인 movsd 로드/저장을 피하고 대신 로터리 방법을 선택할 수 있습니다.
위 내용은 C 제한에도 불구하고 x86_64에서 Double 및 벡터에 대한 원자적 연산을 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!