go mysql 异步_怎样理解golang的异步?

本文探讨了Go语言如何使用同步代码实现异步效果,通过一个示例展示了如何利用通道(channel)进行协程间的通信。在示例中,`sum`函数模拟了延迟操作,`another`函数则在完成其他任务后接收结果。同步异步的理解中,同步通常指调用者需要等待结果,而异步则允许调用者在结果准备就绪前继续执行。阻塞和非阻塞主要涉及IO操作,与同步异步概念不同。文章还提供了一个链接,进一步解释了这两者的区别。
摘要由CSDN通过智能技术生成

都说golang,可以用同步的思想写出异步的代码,不知道大家都是如何理解这句话的?

下面这段代码算是这句话的一个例子吗?

```go

func sum(x,y int,c chan int){

time.sleep(5*time.Second)

c

}

func another(c chan int){

fmt.Println(

do something else...

}

func main(){

c := make (chan int)

go sum(24,18,c)

go another(c)

fmt.Println("继续执行")

do something else...

time.Sleep(60*time.Second)

}

```

此外,再说一下我对同步异步阻塞非阻塞的理解:

阻塞非阻塞:一般用于网络io中,阻塞即需要等待,不会立即返回。非阻塞则会立刻返回。

同步异步:当一个同步调用发出后,调用者要主动去获取调用结果。当一个异步过程调用发出后,实际处理这个调用的部件在完成后,通过消息回调来通知调用者调用的结果。

可以明确的是,阻塞与非阻塞与是否同步异步无关

附赠一个讲解阻塞非阻塞和同步异步挺清楚的一篇文章,传送门:https://www.cnblogs.com/wxl-dede/p/5134636.html

有疑问加站长微信联系(非本文作者)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值