摘要: 3.12 Go之并发打印(借助通道实现) 使用无缓冲通道实现并发打印数字 示例代码: package main​import "fmt"​/*Go之并发打印结果 *//* 定义一个打印函数 */func printer(c chan int) { // 无限循环等待数据 for { // 从chan 阅读全文
posted @ 2022-03-21 09:28 俊king 阅读(124) 评论(0) 推荐(0)
摘要: 3.12 Go之通道关闭后继续使用 概念 通道是一个引用,会被垃圾回收机制回收,也可以主动关闭 关闭通道的函数 函数: close() 被关闭的通道的特点: 被关闭的通道不会被置为nil 给被关闭的通道发送数据会触发panic 向已关闭的通道发送数据会发生阻塞 package main​import 阅读全文
posted @ 2022-03-21 09:27 俊king 阅读(215) 评论(0) 推荐(0)
摘要: 3.11 Go之RPC(模拟远程调用过程) 什么是RPC框架? RPC是指Remote Procedure Call远程过程调用 作用: 简化进程间通信的过程 RPC的作用 装通信过程,让远程的数据收发通信过程看起来就像本地的函数调用一样。 Go之RPC示例 特点: 使用channel代替Socke 阅读全文
posted @ 2022-03-21 09:26 俊king 阅读(342) 评论(0) 推荐(0)
摘要: 3.11 Go之使用通道响应计时器事件 通道响应计时器应用场景 由于go中的goroutine的设计,定时任务可以再goroutine中通过同步的方式进行也可以通过异步回调完成 同步进行 异步回调 延迟回调 使用time包下的time.AfterFunc函数提供了该条件。传入一个时间再传入一个函数那 阅读全文
posted @ 2022-03-21 09:26 俊king 阅读(116) 评论(0) 推荐(0)
摘要: 3.10 Go之缓冲通道 缓冲通道种类 无缓冲通道 带缓冲通道 什么是无缓冲(Unbuffered Channel)通道? 指在接收前没有能力保存任何值的通道 >一进一出(只能进一个值) 特点: 要求发送goroutine和接收goroutine同时准备好,才能完成发送和接收操作 理解: 可以理解为 阅读全文
posted @ 2022-03-21 09:25 俊king 阅读(265) 评论(0) 推荐(0)
摘要: 3.11 Go之通道多路复用 >同时处理接收和发送多个通道的数据 什么是通道多路复用? 同时处理接收和发送多个通道的数据 表示在一个信道上传输多路信号或数据流的过程和技术 举例: 电话是一个典型的多路复用设备,在一条线路上可以同时接收或发送数据 多通道操作的两个处理办法 使用for循环进行通道处理遍 阅读全文
posted @ 2022-03-21 09:25 俊king 阅读(314) 评论(0) 推荐(0)
摘要: 3.9 Go之单向通道 什么是单向通道 channel本身支持读写操作,单向通道顾名思义是指一个通道只能读或者只能写 注意: 如果一个通道只能读或者只能写将毫无意义。所以单向channel的概念只是对channel的一种使用限制 单向通道的声明格式 关键点: <指向哪儿数据往哪儿流 var 通道实例 阅读全文
posted @ 2022-03-21 09:24 俊king 阅读(441) 评论(0) 推荐(0)
摘要: 3.10 Go之channel超时机制 什么是超时? 所谓的超时可以理解为token过期,需要重新操作 Go中的channel超时机制 为了防止channel被其他goroutine竞争,所以需要设置一个超时处理器 处理办法: 使用select来处理超时 Go中select的使用方法以及和switc 阅读全文
posted @ 2022-03-21 09:24 俊king 阅读(453) 评论(0) 推荐(0)
摘要: 3.8 Go之通道(chan) 什么是通道? goroutine的通信管道 如何李姐通道 首先不要混淆goroutine和channel之间的关系 goroutine是并发的结构体 channel是每个结构体通信的桥梁 channel的特点: channel是一个通信机制,每个channel都有一个 阅读全文
posted @ 2022-03-21 09:23 俊king 阅读(175) 评论(0) 推荐(0)
摘要: 3.8 Go之并发和并行 并发和并行 并发(concurrency) 并发是指: 把任务在不同时间点交给处理器进行处理。同一时间点,任务并不会同时运行。 核心概念: 同时管理很多事情 并行的关键: 事情可能只做了一半就被暂停去做别的事情了 并行(parallelism) 并行是指: 把每一个任务分配 阅读全文
posted @ 2022-03-21 09:22 俊king 阅读(94) 评论(0) 推荐(0)
摘要: 3.2 Go之语言竞争状态 什么是竞争状态? 两个或者多个goroutine在没有相互同步的情况下,访问某个共享的资源,如同时对该资源进行读写时就会处于相互竞争的状态。这就是并发中的资源竞争。 资源竞争示例 package main​import ( "fmt" "runtime" "sync")​ 阅读全文
posted @ 2022-03-21 09:21 俊king 阅读(162) 评论(0) 推荐(0)