@atomicRmw — 값을 원자적으로 바꾸고 예전 값을 돌려받기
@atomicRmw — 값을 원자적으로 바꾸고 예전 값을 돌려받기
값을 바꾸는 일은 보통은 단순하지만, 여러 스레드가 같은 메모리를 건드리는 상황에서는 이야기가 달라져요. 그 사이에 다른 쪽이 값을 바꿨다면 결과가 꼬일 수 있거든요. @atomicRmw는 (Read-Modify-Write) 이 작업 전체를 원자적으로 처리해서, 중간에 끼어들 틈을 없애 줍니다.
본문
이 내장 함수는 T를 가리키는 포인터를 역참조해 값을 원자적으로 수정하고, 수정하기 전의 값을 돌려줘요.
@atomicRmw(comptime T: type, ptr: *T, comptime op: AtomicRmwOp, operand: T, comptime ordering: AtomicOrder) T
T는 포인터, bool, 부동소수점(float), 정수(integer), enum, 또는 packed struct여야 해요.
AtomicOrder는 @import("std").lang.AtomicOrder로 찾을 수 있고, AtomicRmwOp는 @import("std").lang.AtomicRmwOp로 찾을 수 있어요.
더 알아보기
관련된 원자 연산 내장 함수들이 더 있어요: