golang能做高并发的原因


本文摘自php中文网,作者(*-*)浩,侵删。

go为什么能做到高并发

goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,几十个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。 (推荐学习:go)

执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。

goroutine比thread更易用、更高效、更轻便。

一些高并发的处理方案基本都是使用协程,openresty也是利用lua语言的协程做到了高并发的处理能力,PHP的高性能框架Swoole目前也在使用PHP的协程。

协程更轻量,占用内存更小,这是它能做到高并发的前提。

go web开发中怎么做到高并发的能力

学习go的HTTP代码。先创建一个简单的web服务。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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)

    }

}

然后编译

1

2

go build -o test_web.gobin

./test_web.gobin

然后访问

1

2

curl 127.0.0.1:9000

Hello world!

以上就是golang能做高并发的原因的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

golang main如何返回值

dart和golang区别

golang和python的区别

golang判断今天星期几

golang之sync.pool对象池对象重用机制总结

手撸golang 行为型设计模式 策略模式

golang 获取三种不同的路径方法(执行路径,项目路径,文件路径)

怎么安装godoc

kotlin coroutines vs goroutines

golang channel是什么

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...