Go 语言并发 并发指在同一时间内可以执行多个任务。并发编程含义比较广泛,包含多线程编程、多进程编程及分布式程序等。本章讲解的并发含义属于多线程编程。 Go 语言通过编译器运行时(runtime),从语言上支持了并发的特性。Go 语言的并发通过 goroutine 特性完成。goroutine 类似 ...
分类:
编程语言 时间:
2019-12-22 10:23:46
阅读次数:
103
Goroutine是建立在线程之上的轻量级的抽象。它允许我们以非常低的代价在同一个地址空间中并行地执行多个函数或者方法。相比于线程,它的创建和销毁的代价要小很多,并且它的调度是独立于线程的。在golang中创建一个goroutine非常简单,使用“go”关键字即可: Goroutine与线程的区别 ...
分类:
其他好文 时间:
2019-12-21 13:47:43
阅读次数:
102
Go语言runtime.Gosched()函数浅析 这个函数的作用是让当前goroutine让出CPU,好让其它的goroutine获得执行的机会。同时,当前的goroutine也会在未来的某个时间点继续运行。 请看下面这个例子(show.go): package main import ( "fm... ...
分类:
其他好文 时间:
2019-12-19 21:13:09
阅读次数:
92
channel的基本介绍 channel的本质是一个数据结构队列 数据是先进先出 FIFO 线程安全,多goroutine访问时,不需要加锁,就是说channel本身是线程安全的 channel是由类型的,一个string的channel只能存放string类型数据 无缓冲的channel关闭后,再... ...
分类:
其他好文 时间:
2019-12-19 20:59:18
阅读次数:
261
1、轻量级线程 goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。Go 程序从 main 包的 main() 函数开始,在程序启动时,Go 程序就会为 main() 函数创建一个默认 ...
分类:
编程语言 时间:
2019-12-08 17:37:43
阅读次数:
113
golang和swoole区别 开发效率 Go语言是本质上是静态语言,开发效率稍差,但性能更强,更适合底层软件的开发 Swoole使用PHP语言,动态脚本语言,开发效率最佳,更适合应用软件的开发 IO模型 go语言使用单线程eventloop处理IO事件,多线程实现协程调度,执行用户层代码 swoo ...
分类:
其他好文 时间:
2019-12-02 23:45:40
阅读次数:
125
自从开始使用 Go 语言,到现在也有一年多了,虽不算精通,但也算小有理解。在这里简单记录一下我的心得(其实是学习别人的心得) goroutine,Go 语言中 cpu 运行的最小单元,与 lua 携程类似,只是叫法和调度方式不同,而 Go-runtime 是如何调度这些 goroutine 将大大小 ...
分类:
编程语言 时间:
2019-11-08 19:13:37
阅读次数:
80
一.goroutine简介 Golang中最迷人的一个优点就是从语言层面就支持并发 在Golang中的goroutine(协程)类似于其他语言的线程 并发和并行 并行(parallelism)指不同的代码片段同时在不同的物理处理器上支持 并发(concurrency)指同时管理多个事情,物理处理器上 ...
分类:
其他好文 时间:
2019-11-02 00:38:50
阅读次数:
132
在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的t ...
分类:
其他好文 时间:
2019-10-02 16:22:36
阅读次数:
85