Golang は、効率的で簡潔な同時実行プログラミング言語です。 Golang では、cond はプログラムの同時実行を制御するために使用されるツールです。この記事ではcondの使い方を詳しく紹介します。
1. cond の基本紹介
cond の正式名は条件変数で、Golang の重要な同時実行制御メカニズムです。 cond の主な機能は、複数のゴルーチンが共有変数の状態が変化するのを同時に待機できるようにし、共有変数の状態が変化したときに待機中のゴルーチンに後続の操作を実行するように通知することです。 mutex とは異なり、cond は共有変数への同時アクセスを保護するために使用できません。完了するには mutex に依存する必要があります。その基本的な使用法は非常に簡単で、次の 3 つのステップに分かれています。
2. cond の使用法
実際のアプリケーションでは、共有変数への安全な同時アクセスを実現するために、cond は通常、mutex と組み合わせて使用されます。以下は、cond を使用して複数のゴルーチンの同時実行を制御する方法を示す簡単なサンプル プログラムです。
package main import ( "fmt" "sync" ) var ( count int mutex sync.Mutex cond *sync.Cond = sync.NewCond(&mutex) ) func worker() { for { mutex.Lock() for count < 10 { cond.Wait() } count-- fmt.Printf("worker: %d\n", count) mutex.Unlock() cond.Signal() } } func main() { for i := 0; i < 10; i++ { go worker() } for { mutex.Lock() if count >= 10 { mutex.Unlock() break } count++ fmt.Printf("main: %d\n", count) mutex.Unlock() cond.Signal() } }
このサンプル コードでは、count は初期値 0 の共有変数を表し、ゴルーチンの数を示します。実行できるタスク。共有変数 count の値が 10 未満の場合、すべてのワーカー ゴルーチンは、共有変数 count の値が 10 を超えるまで待機してから起動されます。
メインのゴルーチンで、ループ内で cond.Signal() 関数を呼び出して共有変数 count の値を増やし、待機中のワーカー ゴルーチンに実行を継続するように通知します。共有変数 count の値が 10 に増加すると、メイン goroutine は cond.Signal() 関数の呼び出しを停止し、すべてのワーカー goroutine が実行を終了します。
ゴルーチンが cond を待機すると、他のゴルーチンが共有変数にアクセスできるように、ミューテックス ロックが自動的に解放されることに注意してください。ゴルーチンが目覚めると、実行を継続するにはミューテックス ロックを再取得する必要があります。
3. cond の注意点
cond は従来の条件変数の仕組みに比べて効率的な同期機構ですが、使用する際には注意すべき点もあります。
以上がgolang cond の使い方の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。