并发编程——Future模式

Future 模式

假如你没写作业,第二天上课的时候,老师收作业,你拿了一个空本,把空本交上去了,然后,此刻,你奋笔疾书的补作业,在老师批到你的作业的时候,你已经补完了作业,老师打开你的空本,说张三,你怎么交了一个空本上来。你故作尴尬的说,不是吧?难道交错了?然后你佯装镇定的从书包里掏出你补完的作业本,交给了老师大人。好一招儿借尸还魂。

Future模式,是异步编程的一种并发模式,在执行异步方法的时候,他会直接返回一个结果给你,但是该结果不可用,直到异步方法执行后,产生有效的结果,此时会对反馈给你的结果进行填充,并通知你,可以使用处理的结果了。

package main

import (
	"fmt"
	"time"
)

func FutureGo[T any](f func(result chan<- T)) chan T {
	resultChan := make(chan T, 10)
	go func() {
		f(resultChan)
		close(resultChan)
	}()
	return resultChan
}

func main() {
	result := FutureGo(func(result chan<- string) {
		// 业务逻辑,返回值用result带回去
		time.Sleep(time.Second * 5)
		result <- "作业补完了,偷摸交上去"
	})

	fmt.Printf("%v\n", result)
	fmt.Println("继续向下执行,异步操作")
	fmt.Printf("%v\n", <-result)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

metabit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值