アトミック LoadInt32 と StoreInt32: それらの重要性を理解する
Golang の sync/atomic パッケージは、共有メモリ上の操作が確実に実行されることを保証するアトミック操作を提供します。アトミックなので、同時実行の goroutine 間の一貫性が確保されます。これは、複数のゴルーチンが同じ変数に同時にアクセスまたは変更しようとする場合に必要になり、データ競合状態が発生する可能性があります。
LoadInt64 および StoreInt64
atomic.LoadInt64 および atomic。 StoreInt64 は、それぞれ 64 ビット整数の読み取りと書き込みを行う 2 つの特定のアトミック操作です。これらの使用法を説明するために、次のコードを考えてみましょう。
<code class="go">package main import ( "sync/atomic" "time" ) var sharedCounter int64 func main() { go func() { for { v := atomic.LoadInt64(&sharedCounter) // Read sharedCounter using atomic load time.Sleep(10 * time.Millisecond) atomic.StoreInt64(&sharedCounter, v+1) // Increment sharedCounter using atomic store } }() go func() { for { time.Sleep(time.Second) v := atomic.LoadInt64(&sharedCounter) // Read sharedCounter again using atomic load println(v) } }() time.Sleep(60 * time.Second) // Keep the program running for some time to see updates }</code>
アトミック操作の重要性
この例では、複数のゴルーチンがsharedCounter変数へのアクセスを共有します。
以上がatomic.LoadInt64 と atomic.StoreInt64 は、同時実行 Go プログラムでのデータの一貫性とメモリの順序をどのように保証しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。