go為什麼能做到高並發
goroutine是Go平行設計的核心。 goroutine說到底其實就是協程,但是它比線程更小,幾十個goroutine可能體現在底層就是五、六個線程,Go語言內部幫你實現了這些goroutine之間的記憶體共享。 中 的數據伸縮。也因為如此,可同時運行成千上萬個並發任務。 goroutine比thread更易用、更有效率、更輕。
一些高並發的處理方案基本上都是使用協程,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中文網其他相關文章!