[go] sync 패키지의 atomic 연산 기능
Go 언어의 sync 패키지는 고루틴 간의 안전한 통신과 공유 메모리 접근을 위한 기능을 제공합니다. 이 중에서도 atomic 패키지는 원자적(atomic) 연산을 통해 메모리의 공유 상태를 안전하게 유지할 수 있게 해줍니다.
atomic 패키지의 주요 기능
Go 언어의 atomic 패키지는 원자적인 데이터 연산을 수행하는 함수들을 제공하여 공유 메모리에 대한 안전한 접근을 보장합니다. 주요 함수들로는 Add
, CompareAndSwap
, Load
, Store
, Swap
등이 있습니다.
사용 예시
아래는 atomic 패키지를 사용하여 공유 메모리의 안전한 접근을 보장하는 예시 코드입니다.
package main
import (
"fmt"
"sync/atomic"
)
func main() {
var count int32 = 0
// 값 읽기
val := atomic.LoadInt32(&count)
fmt.Println("현재 값:", val)
// 값 증가
atomic.AddInt32(&count, 1)
// 값 비교 후 교체
swapped := atomic.CompareAndSwapInt32(&count, 2, 5)
fmt.Println("교체 여부:", swapped)
}
위 코드는 atomic
패키지를 이용하여 값을 읽고, 증가시키며, 비교 후 필요한 값으로 교체하는 과정을 안전하게 수행하는 예시입니다.
참고 자료
원자적 연산은 공유 메모리에 대한 안전한 접근을 위해 매우 유용하며, sync 패키지의 atomic 기능을 활용하여 안정적이고 효율적인 프로그래밍을 할 수 있습니다.