메모리 장벽이 실행 순서를 보장하는 것 외에도 원자적 작업의 가시성 속도를 향상합니까?
생산자-소비자의 맥락에서 대기열의 경우 생산자가 저장한 데이터가 소비자에게 최대한 빨리 표시되도록 의도되는 경우가 많습니다. 가능한. 생산자의 저장 작업과 소비자의 로드 작업 사이에 하드웨어 메모리 펜스를 추가하면 이 목표를 달성하는 데 도움이 될지 궁금할 수도 있습니다.
그러나 메모리 펜스를 추가해도 다중 작업에서 원자 작업의 대기 시간에는 큰 영향을 미치지 않습니다. 핵심 시스템. 그 이유는 메모리 펜스가 있는지 여부에 관계없이 하드웨어가 이미 다른 모든 코어에 대한 저장소 작업 가시성을 보장하기 때문입니다.
펜스가 없으면 어떻게 되나요?
펜스가 없는 경우, 출시 메모리 주문을 통한 생산자의 매장 운영은 향후 어느 시점에 다른 모든 코어에 공개될 것이 보장됩니다. x86 아키텍처에는 하드웨어 장벽이 없는 반면, ARM 아키텍처에서는 저장 작업 전(생산자 측)과 로드 작업 후(소비자 측)에 펜스가 배치됩니다.
없더라도 x86의 경우 하드웨어 펜스를 사용하면 펜스 없이 생산자가 저장한 값은 결국 펜스 없이 로드 작업을 통해 관찰됩니다. 이 프로세스에는 몇 번의 실패한 로드 시도가 필요할 수 있지만 결국에는 성공하게 됩니다.
메모리 배리어가 지연 시간에 미치는 영향
일반적으로 메모리 배리어를 추가해도 속도가 줄어들지 않습니다. 다음과 같은 이유로 저장된 값을 관찰하는 대기 시간:
결론
대부분의 경우 불필요한 추가 생산자-소비자 큐의 원자적 작업 간 메모리 장벽은 대기 시간을 개선하지 않습니다. 하드웨어는 명시적인 메모리 장벽 없이도 원자적 작업의 가시성을 이미 보장합니다. 프로파일링은 메모리 장벽이 유익한 상황을 식별하는 데 필수적이며 필요한 경우에만 사용해야 합니다.
위 내용은 메모리 배리어는 생산자-소비자 대기열에서 원자적 작업 속도를 높이나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!