Go が高い同時実行性を達成できる理由
ゴルーチンは Go の並列設計の中核です。最終的な分析では、ゴルーチンは実際にはコルーチンですが、スレッドよりも小さいです。数十のゴルーチンが下部の 5 つまたは 6 つのスレッドに反映される場合があります。Go 言語は、これらのゴルーチン間のメモリ共有を実現するのに役立ちます。 (推奨学習: Go )
Goroutine を実行するには、非常に小さなスタック メモリ (約 4 ~ 5kb) しか必要としません。もちろん、対応するデータに応じて拡張可能です。このため、何千もの同時タスクを同時に実行できます。 Goroutine はスレッドよりも使いやすく、効率的で、軽量です。 一部の高同時実行処理ソリューションは基本的にコルーチンを使用します。Openresty も Lua 言語のコルーチンを使用して高い同時実行処理能力を実現しています。現在、PHP の高パフォーマンス フレームワーク Swoole も PHP のコルーチンを使用しています。コルーチンは軽量で、占有メモリも少なくなります。これは、高い同時実行性の前提条件です。
Go Web 開発で高い同時実行性を実現する方法
Go HTTP コードを学習します。まず簡単な Web サービスを作成します。package main import ( "fmt" "log" "net/http" ) func response(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello world!") //这个写入到w的是输出到客户端的 } func main() { http.HandleFunc("/", response) err := http.ListenAndServe(":9000", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } }
次にコンパイル
go build -o test_web.gobin ./test_web.gobin
次にアクセス
curl 127.0.0.1:9000 Hello world!
以上がgolang が高い同時実行性を実現できる理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。