언어 표준과 달리 GNU C 및 GNU C 컴파일러는 특정 아키텍처를 기반으로 원자성을 처리합니다. C11과 C 11에서는 _Atomic 유형과 std::atomic<> 이 기사에서는 원자 증가, 감소 또는 복합 할당을 제외하고 자연적인 원자 읽기 및 쓰기에만 중점을 둡니다.
64비트 Linux에서 x86-64 프로세서가 장착된 컴퓨터에서 다음 유형은 자연적으로 원자성 읽기 및 쓰기:
그러나 이러한 유형조차도 언어 표준에 따라 자동으로 자동으로 원자적이지는 않다는 점에 유의하는 것이 중요합니다.
두 가지가 있습니다 "원자"의 주요 의미:
하드웨어 수준에서 유형이 자연스럽게 원자성이라고 해서 컴파일러가 항상 원자 명령을 사용하여 액세스합니다. 최적화는 대상 하드웨어에서 원자성으로 알려진 데이터 유형의 경우에도 비원자적 액세스로 이어질 수 있습니다.
예를 들어 x86의 32비트 정수에서 로드하는 것은 원자성이지만 컴파일러는 원자성을 보장하지 않는 16비트 부분 로드 또는 저장을 사용합니다.
요약하자면, 64비트 컴퓨터에서 확실히 자동으로 원자성을 갖는 C 또는 C입니다. 원자성 액세스를 보장하려면 _Atomic 또는 std::atomic 유형을 사용하거나 문서를 참조하여 특정 아키텍처 및 컴파일러에 대한 원자성 보장을 확인하는 것이 중요합니다.
위 내용은 64비트 x86-64 시스템에서 자연적으로 원자적인 동작을 나타내는 C 및 C 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!