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)
}
相关推荐
互联网中的一颗神经元2 分钟前
10. Large 对象分配:直接路径
开发语言·golang
卷无止境44 分钟前
当FastAPI遇上机器学习,一个脚手架工具能省下多少工夫
后端·python·fastapi
卷无止境1 小时前
Kilo CLI 到底是什么
人工智能·后端·python
coderCN1 小时前
Nodejs 响应头和请求头
后端·node.js
SamDeepThinking1 小时前
里氏替换原则的盲区:为什么符合契约的List替换依然会失败?
后端·面试·程序员
码事漫谈1 小时前
比尔·盖茨这次谈的不是模型,是账单
前端·后端
小林ixn1 小时前
从零设计一个博客系统的数据库:表结构、索引与约束的实战思考
数据库·后端·mysql
mayaairi1 小时前
JS BOM完全指南(二):事件轮询、三大尺寸家族与浏览器对象详解
开发语言·javascript·ecmascript
technology_x2 小时前
液冷超充站设备厂家哪家好?2026年功率与散热对比
java·开发语言