문제

나는 비슷한 템플릿이 Intel의 TBB에서 종료된다는 것을 알고 있습니다. 그 외에도 Google 또는 Boost Library에서는 구현을 찾을 수 없습니다.

도움이 되었습니까?

해결책

Boost 에서이 기능 구현에 대한 토론을 찾을 수 있습니다. http://lists.boost.org/archives/boost/2008/11/144803.php

> N2427 -C ++ 원자 유형 및 작업을 구현할 수 있습니까?

> 컴파일러의 도움없이?

아니.

인라인 어셈블러 (또는 해당 문제에 대해 별도로 컴파일 된 어셈블러)를 작성할 수 있다면 내부장 일 필요는 없습니다. 그러면 작업 자체를 직접 쓸 수 있습니다. 간단한 C ++를 사용할 수도 있습니다 (예 :로드 또는 저장에 대한 일반 과제). 컴파일러 지원이 필요한 이유는 부적절한 최적화를 방지하는 것입니다. 원자 작업을 최적화 할 수 없으며 일반적으로 다른 작업 전후에 재정렬해서는 안됩니다. 이는 원자 상점 전에 수행 된 비 원자 매장조차 완료해야하며 레지스터 (예 : 등록부에 캐시 할 수 없음을 의미합니다. 또한, 원자 연산 후에 발생하는 하중은 원자 OP 전에 들어 올릴 수 없습니다. 일부 컴파일러에서는 인라인 어셈블러를 사용하는 것만으로도 충분합니다. 다른 사람들에게는 외부 기능을 부르는 것으로 충분합니다. MSVC는 _ReadWriteBarrier ()를 제공하여 컴파일러 순서를 제공합니다. 다른 컴파일러에는 다른 플래그가 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top