Raku의 atomic-dec-fetch — 감소시키고 값 읽기
Raku의 atomic-dec-fetch — 감소시키고 값 읽기
공유 카운터를 1씩 줄여야 하는데, 줄이고 난 뒤의 값을 정확히 봐야 한다면 atomic-dec-fetch를 써요. 네이티브 정수에 원자적 감소(atomic decrement)를 수행하고, 감소된 결과값을 돌려줘요.
multi atomic-dec-fetch(atomicint $ is rw)
이 연산은 하드웨어가 제공하는 원자적 연산으로 수행돼요. 연산 자체가 원자적이기 때문에 락(lock)을 걸지 않고도 안전하게 쓸 수 있어요. 반환값은 감소시킨 뒤의 값이고, 넘침(overflow)은 조용히 감싸져요(wrap).
본문
atomicint값을 1만큼 원자적으로 감소시키고, 감소 후의 값을 돌려줘요.- 하드웨어 원자적 연산 덕분에 락 없이 스레드 안전해요.
- 이름의
dec-fetch가 말해주듯, '감소한 뒤 값을 읽는' 순서예요. 반대로 '값을 읽고 감소'는atomic-fetch-dec계열이에요. - 넘침은 조용히 감싸지므로, 카운터가 극단적으로 클 땐 동작을 확인해 둘 필요가 있어요.