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)
}
相关推荐
Pointer Pursuit2 分钟前
C++——二叉搜索树
开发语言·c++
澪吟6 分钟前
C++ 从入门到进阶:核心知识与学习指南
开发语言·c++
热爱编程的小白白25 分钟前
【Playwright自动化】安装和使用
开发语言·python
听风吟丶26 分钟前
Java NIO 深度解析:从 BIO 到 NIO 的演进与实战
开发语言·python
学历真的很重要27 分钟前
LangChain V1.0 Messages 详细指南
开发语言·后端·语言模型·面试·langchain·职场发展·langgraph
sali-tec30 分钟前
C# 基于halcon的视觉工作流-章58-输出点云图
开发语言·人工智能·算法·计算机视觉·c#
lpfasd12330 分钟前
Rust + WebAssembly:让嵌入式设备被浏览器调试
开发语言·rust·wasm
lion King77632 分钟前
c++八股:explicit
开发语言·c++
初见无风35 分钟前
4.3 Boost 库工具类 optional 的使用
开发语言·c++·boost
申阳36 分钟前
Day 7:05. 基于Nuxt开发博客项目-首页开发
前端·后端·程序员