PHP前端开发

Golang高并发代码分享

百变鹏仔 2个月前 (02-07) #Python
文章标签 代码

今天领导问起为什么用golang,同事回答语法简单,语言新,支持高并发。那高并发到底如何实现,下面这篇文章主要给大家介绍了关于如何利用golang写出高并发代码的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

之前一直对Golang如何处理高并发http请求的一头雾水,这几天也查了很多相关博客,似懂非懂,不知道具体代码怎么写

下午偶然在开发者头条APP上看到一篇国外技术人员的一篇文章用Golang处理每分钟百万级请求,看完文章中的代码,自己写了一遍代码,下面自己写下自己的体会

核心要点

立即学习“go语言免费学习笔记(深入)”;

将请求放入队列,通过一定数量(例如CPU核心数)goroutine组成一个worker池(pool),workder池中的worker读取队列执行任务

实例代码

以下代码笔者根据自己的理解进行了简化,主要是表达出个人的思路,实际后端开发中,根据实际场景修改

func doTask() { //耗时炒作(模拟) time.Sleep(200 * time.Millisecond) wg.Done()}//这里模拟的http接口,每次请求抽象为一个jobfunc handle() { //wg.Add(1) job := Job{} JobQueue <p><strong>测试</strong></p><pre class="brush:js;">func Benchmark_handle(b *testing.B) { runtime.GOMAXPROCS(runtime.NumCPU()) d := NewDispatcher() d.Run() for i:=0;i<p><strong>测试结果</strong></p><pre class="brush:js;">pkg: golang-study-demo/goroutine1 2029931652 ns/opPASS

1w个任务放到队列中,1000个worker去执行任务,每个任务的耗时200ms,任务执行完需要2s多

以上只是笔者的个人看法,不知道对Golang并发编程的理解是否正确,有错误的地方,希望高手指点一二,在此谢过