[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 기능을 활용하여 안정적이고 효율적인 프로그래밍을 할 수 있습니다.