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)
}
相关推荐
ch.ju6 小时前
Java Programming Chapter 4——The set-get method.
java·开发语言
dog2506 小时前
科斯定理与平坦随机网络的自然秩序
开发语言·网络·php
Micro麦可乐6 小时前
最新Spring Security实战教程(十)权限表达式进阶 - 在SpEL在安全控制中的高阶魔法
java·spring boot·后端·spring·spring security·spel表达式
Wonderful U6 小时前
基于Python+Django的文件预览与转换系统:从架构设计到完整实现
后端·python·django
忧郁的蛋~6 小时前
ASP.NET Core Web API 完全指南:请求管道、认证、错误处理到生产部署
前端·后端·asp.net·.net
IronMurphy6 小时前
List 经典问
java·开发语言
Jinkxs6 小时前
Resilience4j- 非 Spring 环境集成:纯 Java 项目中的手动配置实现
java·后端·spring
Hiter_John6 小时前
Golang的循环语句
开发语言·算法·golang
拾光师6 小时前
Python 列表(List)与元组(Tuple)详解
后端
copyer_xyf6 小时前
Python 类全面总结
前端·后端·python