您好,登錄后才能下訂單哦!
goroutine是Go并行設計的核心。goroutine說到底其實就是協程,但是它比線程更小,幾十個goroutine可能體現在底層就是五六個線程,Go語言內部幫你實現了這些goroutine之間的內存共享。
執行goroutine只需極少的棧內存(大概是4~5KB),當然會根據相應的數據伸縮。也正因為如此,可同時運行成千上萬個并發任務。
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能做高并發的原因的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。