go并发模式之----使用时顺序模式

常见模式之二:使用时顺序模式

定义

顾名思义,起初goroutine不管是怎么个先后顺序,等到要使用的时候,需要按照一定的顺序来,也被称为未来使用模式

使用场景

  • 每个goroutine函数都比较独立,不可通过参数循环复用

  • 任务各自独立,结果组合依赖顺序

示例

Go 复制代码
package main

import (
	"fmt"
	"time"
)

func grepMySQL() <-chan string {
	res := make(chan string)
	go func() {
		time.Sleep(time.Millisecond * 30)
		res <- "grep data from MySQL"
	}()
	return res
}

func grepSQLServer() <-chan string {
	res := make(chan string)
	go func() {
		time.Sleep(time.Millisecond * 10)
		res <- "grep data from SQLServer"
	}()
	return res
}

func grepRedis() <-chan string {
	res := make(chan string)
	go func() {
		time.Sleep(time.Millisecond * 20)
		res <- "grep data from Redis"
	}()
	return res
}

func main() {
	mysqlRes := grepMySQL()
	sqlServerRes := grepSQLServer()
	redisRes := grepRedis()

	// 数据排序规则是 redis -- mysql -- sqlServer
	resArr := []string{
		<-redisRes,
		<-mysqlRes,
		<-sqlServerRes,
	}
	fmt.Println(resArr)
}
相关推荐
愚者游世11 分钟前
noexcept 说明符与 noexcept运算符各版本异同
开发语言·c++·程序人生·面试·visual studio
lifewange11 分钟前
如何设计一个 RESTful API
后端·http·restful
代码中介商18 分钟前
C语言预处理指令深度解析:从宏定义到条件编译
c语言·开发语言
安德鲁202218 分钟前
Spring Boot + Undertow 全栈架构深度剖析时序图
后端
码事漫谈20 分钟前
AI 正在重塑职场:有人乘风破浪,有人悄然掉队
后端
hhb_61832 分钟前
Groovy语法进阶与工程实践指南
开发语言·python
用户974369707252842 分钟前
5分钟搭建企业级实时消息推送系统
后端·websocket
counting money43 分钟前
Spring框架基础(配置篇)
java·后端·spring
沐知全栈开发1 小时前
R CSV 文件处理指南
开发语言
生活真难1 小时前
SpringCloud - 任务调度 - xxl-job
后端·spring·spring cloud