> 백엔드 개발 > C++ > 64비트 GNU C/C 시스템에서 기본적으로 원자적인 데이터 유형은 무엇입니까?

64비트 GNU C/C 시스템에서 기본적으로 원자적인 데이터 유형은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-18 04:00:09
원래의
820명이 탐색했습니다.

Which Data Types Are Naturally Atomic on a 64-Bit GNU C/C   System?

64비트 컴퓨터의 어떤 유형이 GNU C 및 GNU C에서 자연적으로 원자적입니까?

C11 이상이나 C 11 이상과 달리 다음을 제공합니다. _Atomic 또는 std::atomic 유형을 사용하여 원자성을 보장하지만 C 및 C 언어 표준 자체는 원자성에 대해 보장하지 않습니다. 읽고 씁니다. 대신 원자성 수준은 컴파일러 구현 및 대상 아키텍처에 따라 다릅니다.

x86-64 프로세서에서 Linux를 실행하는 64비트 컴퓨터에서는 다양한 데이터 유형의 자연스러운 원자성이 다릅니다. GNU C 및 GNU C 컴파일러(gcc 및 g)는 특정 유형에 대해 특정 수준의 원자성을 제공합니다.

원자 유형:

  • int: 헤더의 typedef _Atomic_word int가 원자적임을 나타냅니다.
  • __sig_atomic_t: 헤더 원자 정수 유형을 정의하여 비동기 인터럽트가 있는 경우 원자 읽기 및 쓰기를 보장합니다.

비원자 유형:

  • int64_t(긴 long)
  • uint64_t(부호 없는 long long)
  • double(64비트)
  • 긴 더블(또한 64비트)

추가 참고 사항:

  • 원자성은 원자 증가, 감소 또는 복합이 아닌 원자 읽기 및 쓰기를 나타냅니다.
  • 특정 유형은 보장되지만 특정 컨텍스트에서는 원자성이 있지만(예: 휘발성 sig_atomic_t는 신호와 관련하여 원자성임) 스레드와 관련하여 반드시 원자성은 아닙니다.
  • 컴파일러는 원자성에 대한 가정을 깨는 방식으로 코드를 최적화할 수 있습니다. 특히 다음과 같은 경우에는 더욱 그렇습니다. 가정은 언어 표준에 명시적으로 명시되어 있지 않습니다.
  • 스레드로부터 안전한 동시 액세스를 보장하려면 _Atomic 또는 std::atomic 유형을 명시적으로 사용하는 것이 좋습니다. 추천합니다.

위 내용은 64비트 GNU C/C 시스템에서 기본적으로 원자적인 데이터 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿