Go语言并发学习笔记

一、Go程

1.goroutine是由 Go 运行时管理的轻量级线程

我们称之为Go程是因为现有的术语—线程、协程、进程等等—无法准确传达它的含义。 Go程具有简单的模型:它是与其它Go程并发运行在同一地址空间的函数。它是轻量级的, 所有小号几乎就只有栈空间的分配。而且栈最开始是非常小的,所以它们很廉价, 仅在需要时才会随着堆空间的分配(和释放)而变化。Go程在多线程操作系统上可实现多路复用,因此若一个线程阻塞,比如说等待I/O, 那么其它的线程就会运行。Go程的设计隐藏了线程创建和管理的诸多复杂性。在函数或方法前添加 go 关键字能够在新的Go程中调用它。当调用完成后, 该Go程也会安静地退出。(效果有点像Unix Shell中的 & 符号,它能让命令在后台运行。)


Go语言并发学习笔记_第1张图片

二、信道

信道是带有类型的管道,你可以通过它用信道操作符 <- 来发送或者接收值。信道可以是带缓冲的。将缓冲长度作为第二个参数提供给 make 来初始化一个带缓冲的信道

信道与映射一样,也需要通过 make 来分配内存。其结果值充当了对底层数据结构的引用。 若提供了一个可选的整数形参,它就会为该信道设置缓冲区大小。默认值是零,表示不带缓冲的或同步的信道。    

Go语言并发学习笔记_第2张图片


未完待续

你可能感兴趣的:(Go语言并发学习笔记)