並行性の例
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/10 00:54 UTC 版)
「Go (プログラミング言語)」の記事における「並行性の例」の解説
次のサンプルプログラムは、Goの並行性機能をデモンストレーションする非同期プログラムの実装である。2つの"goルーチン"(軽量スレッド)を立ち上げている。一方はユーザーがテキストを入力するのを待機し、他方はタイムアウトを実現する。.mw-parser-output .monospaced{font-family:monospace,monospace}select文が2つのgoルーチンがメインルーチンにメッセージを送信するのを待機し、最初に到達したメッセージに対して動作を実行する(コード例はDavid Chisnallの本のコードを一部修正している):152。 package mainimport ( "fmt" "time")func readword(ch chan string) { fmt.Println("Type a word, then hit Enter.") var word string fmt.Scanf("%s", &word) ch <- word}func timeout(t chan bool) { time.Sleep(5 * time.Second) t <- true}func main() { t := make(chan bool) go timeout(t) ch := make(chan string) go readword(ch) select { case word := <-ch: fmt.Println("Received", word) case <-t: fmt.Println("Timeout.") }}
※この「並行性の例」の解説は、「Go (プログラミング言語)」の解説の一部です。
「並行性の例」を含む「Go (プログラミング言語)」の記事については、「Go (プログラミング言語)」の概要を参照ください。
- 並行性の例のページへのリンク