Go の同時プログラミングでは、同期メカニズムが共有データの整合性を確保する鍵となります。以下のようなさまざまな組み込み型が提供されます: Mutex (Mutex): 共有データへの排他的アクセスを提供します。読み取り/書き込みロック: 複数の goroutine が同時に読み取ることができますが、1 つの goroutine のみがデータを書き込むことができます。ゴルーチン間で待機および起動する座標用。
Go 関数同時プログラミングにおける同期の仕組み
Go の同時プログラミングにおいて、複数のゴルーチン (When 軽量スレッドの Golang) が動作する場合データを同時に共有するには、データの整合性を確保するために同期メカニズムが必要です。 Go は、Goroutine アクセスを調整するためのさまざまな組み込み同期タイプを提供します。
1. Mutex
Mutex (ミューテックス ロック) は、共有データへの排他的アクセスを提供する最も基本的な同期メカニズムです。一度に 1 つの goroutine だけがミューテックスを保持できるため、共有データに対するアトミックな操作が保証されます。
import ( "fmt" "sync" ) func main() { var count int var mu sync.Mutex for i := 0; i < 1000; i++ { go func(i int) { mu.Lock() count++ mu.Unlock() }(i) } fmt.Println("Count:", count) // 输出:1000 }
2. 読み取り/書き込みロック
読み取り/書き込みロックは、複数のゴルーチンが同時に共有データを読み取ることを可能にする高度な同期メカニズムです。共有データを書き込むゴルーチンがあります。これにより、データの整合性を確保しながら同時実行パフォーマンスが向上します。
import ( "fmt" "sync" ) func main() { var count int var rw sync.RWMutex for i := 0; i < 1000; i++ { go func(i int) { rw.RLock() fmt.Println("Reading:", count) rw.RUnlock() }(i) go func(i int) { rw.Lock() count++ fmt.Println("Writing:", count) rw.Unlock() }(i) } }
3. 条件変数
条件変数 (cond) は、ゴルーチン間の待機と起動を調整するために使用されます。 goroutine が特定の条件を満たすと、その条件を待っている goroutine を起動することができます。
rree以上がGolang 関数同時プログラミングの同期メカニズムは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。