원자 (double) 비교 및 교체 명령어를 사용하여 잠금없는 메커니즘을 구현하고 있습니다. cmpxchg16b잠금 해제 구조에 대한 C++ 원자 연산
현재 어셈블리에서 이것을 작성하고 연결하고 있습니다. 그러나 자동으로 컴파일러를 얻는 방법이 있는지 궁금합니다. 예 : 서라운드 코드 블록을 '원자 적으로'구현하고 기본 프로세서 아키텍처에서 원자 명령어로 코드를 구현하는 방법을 설명합니다 (또는 기본 아치가 지원하지 않으면 컴파일시 오류가 발생합니다).
P. 내가 GCC는 원자 작업을 & C를 지원하는 C++에 대한
http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins
MSVC에는 연동 연산이 포함되어 있으며 GCC에는 원자 연산 함수가 내장되어 있으므로 인라인 어셈블러를 수행 할 필요가 없습니다. 컴파일러 래퍼를 사용하면 컴파일러가 지원하는 모든 플랫폼에서 이식성을 유지할 수 있습니다. – bdonlan
MSVC에는 긴 데이터 유형에 대해서만 연동 연산이 있으며 OP는 두 배로 늘려야합니다. – gbjbaanb
gcc에는 DWCAS에 대한 기본 제공 작업이 없습니다. MSVC에는 DWCAS가 내장되어 있습니다. 증분, 감소 등을위한 DW (더블 워드, 예를 들어, 2 개의 포인터 길이, 나란히) - DW는 오직 존재하고 단지 CAS에 대해서만 존재하며 유일한 존재이다. –