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)
}
相关推荐
h***06651 天前
【JSqlParser】Java使用JSqlParser解析SQL语句总结
java·开发语言·sql
代码or搬砖1 天前
Java Lambda 表达式全面详解
java·开发语言·python
这周也會开心1 天前
JDK1.8新增语法
java·开发语言
随风飘的云1 天前
es搜索引擎的持久化机制原理
后端
心随雨下1 天前
TypeScript泛型开发常见错误解析
java·开发语言·typescript
Se7en25811 天前
基于 MateChat 构建 AI 编程智能助手的落地实践
后端
郝学胜-神的一滴1 天前
现代OpenGL窗口管理:GLFW从入门到实战
开发语言·c++·程序人生·图形渲染·个人开发
n***F8751 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
w***37511 天前
SpringBoot【实用篇】- 测试
java·spring boot·后端
谁刺我心1 天前
C++三种智能指针unique、shared、weak
开发语言·c++