ホームページ > バックエンド開発 > Golang > golang が高い同時実行性を実現できる理由

golang が高い同時実行性を実現できる理由

(*-*)浩
リリース: 2019-12-13 14:42:51
オリジナル
2680 人が閲覧しました

golang が高い同時実行性を実現できる理由

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 サイトの他の関連記事を参照してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート