并发和并行的概念 首先了解什么是并发什么是并行 Go当中实现多核多线程并发 注意: 注意区分什么是goroutine在并发和并行章节已经提到了. 获取当前操作系统CPU的核心数: 示例代码: package main ...
go
Go语言关闭通道后继续使用通道
概念 通道是一个引用,会被垃圾回收机制回收,也可以主动关闭 关闭通道的函数 函数: close() 被关闭的通道的特点: 被关闭的通道不会被置为nil 给被关闭的通道发送数据会触发panic 向已关闭的通...
Go语言RPC(模拟远程过程调用)
什么是RPC框架? RPC是指Remote Procedure Call远程过程调用 作用: 简化进程间通信的过程 RPC的作用 装通信过程,让远程的数据收发通信过程看起来就像本地的函数调用一样。 Go之RPC示例 特点: ...
Go语言通道的多路复用——同时处理接收和发送多个通道的数据
什么是通道多路复用? 同时处理接收和发送多个通道的数据 表示在一个信道上传输多路信号或数据流的过程和技术 举例: 电话是一个典型的多路复用设备,在一条线路上可以同时接收或发送数据 多通道操作...
Go语言channel超时机制
Go语言没有提供直接的超时处理机制,所谓超时可以理解为当我们上网浏览一些网站时,如果一段时间之后不作操作,就需要重新登录。 那么我们应该如何实现这一功能呢,这时就可以使用 select 来设置超时。 虽...
Go语言带缓冲的通道
Go语言中有缓冲的通道(buffered channel)是一种在被接收前能存储一个或者多个值的通道。这种类型的通道并不强制要求 goroutine 之间必须同时完成发送和接收。通道会阻塞发送和接收动作的条件也会不同。只有在通...
Go语言无缓冲的通道
Go语言中无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道。这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能完成发送和接收操作。 如果两个 goroutine 没有同时...
Go语言单向通道——通道中的单行道
Go语言的类型系统提供了单方向的 channel 类型,顾名思义,单向 channel 就是只能用于写入或者只能用于读取数据。当然 channel 本身必然是同时支持读写的,否则根本没法用。 假如一个 channel 真的只能读取数...
Go语言并发打印(借助通道实现)
前面的例子创建的都是无缓冲通道。使用无缓冲通道往里面装入数据时,装入方将被阻塞,直到另外通道在另外一个 goroutine 中被取出。同样,如果通道中没有放入任何数据,接收方试图从通道中获取数据时,同样也是阻...
goroutine和coroutine的区别
C#、Lua、Python 语言都支持 coroutine 特性。coroutine 与 goroutine 在名字上类似,都可以将函数或者语句在独立的环境中运行,但是它们之间有两点不同: goroutine 可能发生并行执行; 但 coroutine 始终顺序...