[golang]go并发goroutine
go 并发 说明 有人把go比作是21世纪的c语言,第一是因为go的设计比较简单,第二,21世纪最重要的就是并发程序设计,而go从语言层面就支持并发。 与此同时,并发程序的内存管理是非常复杂的,而在go中提供了垃圾回收的机制。 Go语言为并发编程而内置的上层API基于顺序通信进程模型CSP(communicating sequential processes)。这就意味着显式锁都是可以避免的,因为Go通过相对安全的通道发送和接受数据以实现同步,这大大地简化了并发程序的编写。 Go语言中的并发程序主要使用两种手段来实现。goroutine和channel。 goroutine goroutine是go并发编程的核心,说到底,goroutine就是协程,比线程更小,go语言在内部帮忙实现了goroutine之间的内存共享。执行goroutine只需要极少的栈内存(大概4-5kb),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。 一般情况下,一个普通计算机跑几十个线程就有点负载过大了,但是同样的机器却可以轻松地让成百上千个goroutine进行资源竞争。 使用 想要创建一个goroutine,只需要在普通函数的前面加一个go关键字,就可以创建并发执行单元。 在并发编程中,我们通常想将一个过程切分成几块