RenderScript 원자 업데이트 함수
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
개요
여러 스레드 간에 공유되는 값을 업데이트하려면 아래 함수를 사용합니다.
메모리 읽기, 업데이트, 메모리 쓰기가 올바른 순서로 실행되도록 값이 원자적으로 업데이트되도록 합니다.
이러한 함수는 원자적이지 않은 함수보다 느리므로 동기화가 필요한 경우에만 사용합니다.
RenderScript에서는 코드를 명시적으로 만들지 않았더라도 코드가 별도의 스레드에서 실행될 수 있습니다. RenderScript 런타임은 종종 한 커널의 실행을 여러 스레드에 분할합니다. 전역 함수는 원자 함수를 사용하여 업데이트해야 합니다. 가능하면 알고리즘을 수정하여 모두 피하세요.
요약
함수
rsAtomicAdd
: 스레드 안전 추가
매개변수
addr | 수정할 값의 주소입니다. |
value | 추가할 금액입니다. |
addr의 값에 원자적으로 값을 추가합니다(예: *addr += value
).
rsAtomicAnd
: 스레드로부터 안전한 비트 단위입니다.
매개변수
addr | 수정할 값의 주소입니다. |
value | 사용할 값입니다. |
두 값의 비트 단위로 원자적으로 수행하며, 결과를 addr에 다시 저장합니다(예: *addr &= value
).
rsAtomicCas
: 스레드로부터 안전한 비교 및 설정
매개변수
addr | 테스트를 통과한 경우 비교하고 대체할 값의 주소입니다. |
비교값 | *추가로 테스트할 값입니다. |
새 값 | 테스트에 통과한 경우 쓸 값입니다. |
addr의 값이compareValue와 일치하면 addr에 newValue가 작성됩니다(예: if (*addr == compareValue) { *addr = newValue; }
).
rsAtomicCas()에서 반환된 값이compareValue인지 확인하면 값이 작성되었는지를 확인할 수 있습니다.
rsAtomicDec
: 스레드로부터 안전한 감소
rsAtomicInc
: 스레드로부터 안전한 증분
rsAtomicMax
: 스레드로부터 안전한 최댓값
매개변수
addr | 수정할 값의 주소입니다. |
value | 비교 값입니다. |
addr의 값을 *addr과 value의 최댓값(예: *addr = max(*addr, value)
)으로 원자적으로 설정합니다.
rsAtomicMin
: 스레드로부터 안전한 최솟값
매개변수
addr | 수정할 값의 주소입니다. |
value | 비교 값입니다. |
addr의 값을 *addr과 value의 최솟값(예: *addr = min(*addr, value)
)으로 원자적으로 설정합니다.
rsAtomicOr
: 스레드로부터 안전한 비트 단위 또는
매개변수
addr | 수정할 값의 주소입니다. |
value | 값이 같거나 같거나 이입니다. |
비트 또는 두 개의 값을 원자적으로 실행하여 결과를 addr에 저장합니다(예: *addr |= value
).
rsAtomicSub
: 스레드 안전 뺄셈
매개변수
addr | 수정할 값의 주소입니다. |
value | 차감할 금액입니다. |
가산의 값에서 원자적으로 값을 뺍니다(예: *addr -= value
).
rsAtomicXor
: 스레드로부터 안전한 비트 전용 또는
매개변수
addr | 수정할 값의 주소입니다. |
value | xor로 사용할 값입니다. |
두 값의 비트별 xor를 원자적으로 실행하여 addr에 결과를 저장합니다(예: *addr ^= value
).
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2024-01-03(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-01-03(UTC)"],[],[]]