>백엔드 개발 >C++ >64비트 x86-64 시스템에서 자연적으로 원자적인 동작을 나타내는 C 및 C 유형은 무엇입니까?

64비트 x86-64 시스템에서 자연적으로 원자적인 동작을 나타내는 C 및 C 유형은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-14 07:40:11985검색

Which C and C   Types Exhibit Naturally Atomic Behavior on a 64-Bit x86-64 System?

64비트 컴퓨터에서 기본적으로 원자적인 C 및 C 유형은 무엇입니까?

언어 표준과 달리 GNU C 및 GNU C 컴파일러는 특정 아키텍처를 기반으로 원자성을 처리합니다. C11과 C 11에서는 _Atomic 유형과 std::atomic<> 이 기사에서는 원자 증가, 감소 또는 복합 할당을 제외하고 자연적인 원자 읽기 및 쓰기에만 중점을 둡니다.

64비트 Linux 컴퓨터에서 원자성 보장

64비트 Linux에서 x86-64 프로세서가 장착된 컴퓨터에서 다음 유형은 자연적으로 원자성 읽기 및 쓰기:

  • int
  • _Atomic_word

그러나 이러한 유형조차도 언어 표준에 따라 자동으로 자동으로 원자적이지는 않다는 점에 유의하는 것이 중요합니다.

원자성의 이해

두 가지가 있습니다 "원자"의 주요 의미:

  • 신호와 관련된 원자: 다양한 명령어 실행 중에 호출된 신호 처리기가 휘발성 sig_atomic_t 변수의 이전 값 또는 새 값만 볼 수 있도록 보장합니다. .
  • 스레드에 대한 원자성: 다음을 보장합니다. 객체에 대한 동시 액세스로 인해 모든 스레드에서 올바른 값이 표시됩니다. 이를 달성하려면 _Atomic 또는 std::atomic 유형이 필요합니다.

컴파일러 최적화 및 원자성

하드웨어 수준에서 유형이 자연스럽게 원자성이라고 해서 컴파일러가 항상 원자 명령을 사용하여 액세스합니다. 최적화는 대상 하드웨어에서 원자성으로 알려진 데이터 유형의 경우에도 비원자적 액세스로 이어질 수 있습니다.

예를 들어 x86의 32비트 정수에서 로드하는 것은 원자성이지만 컴파일러는 원자성을 보장하지 않는 16비트 부분 로드 또는 저장을 사용합니다.

결론

요약하자면, 64비트 컴퓨터에서 확실히 자동으로 원자성을 갖는 C 또는 C입니다. 원자성 액세스를 보장하려면 _Atomic 또는 std::atomic 유형을 사용하거나 문서를 참조하여 특정 아키텍처 및 컴파일러에 대한 원자성 보장을 확인하는 것이 중요합니다.

위 내용은 64비트 x86-64 시스템에서 자연적으로 원자적인 동작을 나타내는 C 및 C 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.