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)
}
相关推荐
阿猿收手吧!25 分钟前
【C++】jthread:优雅终止线程新方案
开发语言·c++
苍何30 分钟前
即梦Seedance2.0海外火爆出圈,AI 视频的 DeepSeek 时刻来了!(附实测教程)
后端
lly20240630 分钟前
《JavaScript 实例》
开发语言
苍何34 分钟前
阿里卷麻了,千问 Qwen-Image-2.0 发布,超强文字渲染、信息图、PPT 轻松做(附实测提示词)
后端
苍何43 分钟前
被马斯克疯狂点赞的国产 AI,很可能是 AI 时代的抖音!
后端
苍何1 小时前
国产Windows 版 Claude Cowork 来了,内置海量 Skills,绝了。
后端
十五年专注C++开发1 小时前
C++中各平台表示Debug的宏
开发语言·c++·debug
张小凡vip1 小时前
Python异步编程实战:基于async/await的高并发实现
开发语言·python
玩c#的小杜同学1 小时前
源代码保卫战:给C# 程序(混淆、加壳与反逆向实战)
开发语言·笔记·c#
码农阿豪2 小时前
SpringBoot实现公正有趣好玩的年会抽奖系统
java·spring boot·后端