Atomic LoadInt32/StoreInt32 (64)
원자 메모리 작업은 여러 고루틴에서 공유 변수에 대한 충돌하는 액세스가 정의된 순서로 발생하도록 보장합니다. , 데이터 일관성을 보장합니다. sync/atomic 패키지는 int32 및 int64를 포함한 다양한 데이터 유형에 대한 원자 로드 및 저장 작업을 제공합니다.
차이점 이해
int64(&sharedA)와 원자 모두입니다. LoadInt64(&sharedA)는 원자 로드를 수행합니다. 그러나 후자는 메모리 순서를 보장하기 위해 명시적으로 sync/atomic 패키지를 사용합니다. 이는 여러 고루틴에 의해 동시에 수정될 수 있는 공유 변수에 액세스할 때 중요합니다.
LoadInt64를 사용하면 다음이 보장됩니다.
사용 예
원자 로드와 저장은 일반적으로 다음과 같은 시나리오에 사용됩니다.
다음 예를 고려하십시오.
<code class="go">package main import "sync/atomic" func main() { // Shared variables var sharedA int64 var sharedB *int64 // Concurrent code go func() { // Set sharedA to 10 atomic.StoreInt64(&sharedA, 10) }() go func() { // Set sharedB to a new value sharedB = new(int64) *sharedB = 20 }() // Main goroutine reads shared variables tmpVarA := atomic.LoadInt64(&sharedA) tmpVarB := atomic.LoadInt64(sharedB) // Print the values println(tmpVarA, *tmpVarB) }</code>
이 예에서 StoreInt64 작업은 여러 고루틴이 데이터 경합을 일으키지 않고 sharedA 및 sharedB를 동시에 수정하도록 보장합니다. LoadInt64는 기본 고루틴이 이러한 공유 변수의 최신 값을 일관되게 읽도록 보장합니다.
위 내용은 Go에서 `atomic.LoadInt64`를 언제, 왜 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!