InterlockedCompareExchange 함수(HLSL 참조)
대상을 비교 값과 개별적으로 비교합니다. 동일한 경우 대상을 입력 값으로 덮어씁니다. 원래 값은 대상의 원래 값으로 설정됩니다.
구문
void InterlockedCompareExchange(
in R dest,
in T compare_value,
in T value,
out T original_value
);
매개 변수
-
dest [in]
-
형식: R
대상 주소입니다.
-
compare_value [in]
-
형식: T
비교 값입니다.
-
value [in]
-
형식: T
입력 값입니다.
-
original_value [out]
-
형식: T
원래 값입니다.
반환 값
이 함수는 값을 반환하지 않습니다.
설명
dest에서 참조하는 값을 compare_value와 원자적으로 비교하고, 값이 일치하는 경우 dest에서 참조하는 위치에 value를 저장하고, original_value에서 dest의 원래 값을 반환합니다. 이 작업은 int 또는 uint 형식 리소스 및 공유 메모리 변수에서만 수행할 수 있습니다. 이 함수에는 두 가지 용도가 있습니다. 첫 번째는 R이 공유 메모리 변수 형식인 경우입니다. 이 경우 함수는 dest가 참조하는 공유 메모리 레지스터에서 작업을 수행합니다. 두 번째 시나리오는 R이 리소스 변수 형식인 경우입니다. 이 시나리오에서 함수는 dest가 참조하는 리소스 위치에서 작업을 수행합니다. 이 작업은 R이 읽고 쓸 수 있는 경우에만 사용할 수 있습니다.
연동 작업은 메모리 펜스/배리어를 의미하지 않습니다.
참고
적절하게 컴파일하기 위해 for 또는 while 컴퓨팅 셰이더 루프에서 InterlockedCompareExchange를 호출한 경우 해당 루프에 대해 [allow_uav_condition] 특성을 사용해야 합니다.
최소 셰이더 모델
이 함수는 다음 셰이더 모델에서 지원됩니다.
셰이더 모델 | 지원됨 |
---|---|
셰이더 모델 5 이상의 셰이더 모델 | 예 |
이 함수는 다음 형식의 셰이더에서 지원됩니다.
꼭짓점 | Hull | 도메인 | 기하 도형 | 픽셀 | 컴퓨팅 |
---|---|---|---|---|---|
x | x | x | x | x | x |
추가 정보