> 백엔드 개발 > C++ > C 정수 읽기 및 쓰기는 항상 원자적입니까?

C 정수 읽기 및 쓰기는 항상 원자적입니까?

DDD
풀어 주다: 2024-11-30 09:00:18
원래의
750명이 탐색했습니다.

Are C   Integer Reads and Writes Always Atomic?

C 읽기 및 쓰기는 int 원자성입니까?

이 질문은 C의 정수 읽기 및 쓰기 작업의 원자성과 관련이 있습니다. 원자성은 작업이 분할할 수 없는 단일 단위로 완료되어 프로세스 중에 중단이 발생하지 않도록 보장합니다.

이 질문에 대한 대답은 시스템 아키텍처에 따라 다릅니다. IA32와 같은 프로세서에서 int에 대한 정렬된 쓰기는 일반적으로 원자적입니다. 그러나 정렬되지 않은 쓰기는 사용된 캐싱 시스템에 따라 원자적이지 않을 수 있습니다. 메모리가 단일 캐시 라인 내에 있으면 원자성이 유지됩니다. 그렇지 않으면 그렇지 않습니다.

또한 CPU와 RAM 사이의 버스 너비도 원자성에 영향을 미칠 수 있습니다. 16비트 버스가 있는 8086과 같은 구형 프로세서의 경우 정렬된 16비트 쓰기는 원자적이었지만 8비트 버스가 있는 8088에서는 동일한 작업이 보장되지 않았습니다.

C/의 경우 C 프로그램에서는 공유 값을 휘발성으로 선언하는 것이 중요합니다. 이렇게 하면 최적화 프로그램이 변수가 스레드 내에서 수정되지 않을 것이라고 가정하는 것을 방지하여 실제 값을 항상 읽도록 보장합니다.

위 내용은 C 정수 읽기 및 쓰기는 항상 원자적입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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