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)
}
相关推荐
苏三说技术几秒前
推荐一个牛逼的RAG+KAG双引擎AI项目
后端
Evand J4 分钟前
【MATLAB例程|车联网6】考虑调头车流扰动与网联车辆实时感知信息的干线多交叉口 FAC-CV 全感应协调控制仿真与性能对比分析
开发语言·matlab·仿真·代码·车联网·智慧交通·车辆
云絮.5 分钟前
数据库事务
java·开发语言·数据库
派葛穆13 分钟前
Python-pip切换镜像源
开发语言·python·pip
Full Stack Developme21 分钟前
Java 漏斗算法 及应用场景
java·开发语言·算法
被摘下的星星28 分钟前
Go的命名规则
golang
阿里嘎多学长28 分钟前
2026-07-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
从此以后自律38 分钟前
Spring 全家桶
java·后端·spring
xxie12379443 分钟前
Python 闭包:函数嵌套的 “状态捕获” 机制
开发语言·python
骑士雄师1 小时前
java面试记录: sychonized 锁,熔断组件,分布式锁
java·开发语言·面试