为什么Go语言要同步地连接数据库?

huangapple go评论79阅读模式
英文:

Why is Go connecting to a database synchronously?

问题

我来自Node背景,正在尝试学习Go语言,通过查看代码示例。

我发现代码大多是同步的,即使是像连接和与数据库通信这样的操作。

func main() {
    // 创建一个新的客户端并连接到服务器
    client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
    if err != nil {
        panic(err)
    }
}

这样做不会阻塞线程直到数据库返回响应吗?如果不会,那是如何实现的?

英文:

I'm coming from a Node background and trying to get into Go, by looking at code examples.

I do find it weird that code is mostly synchronous - even things like connecting and communicating with the database, e.g.

func main() {
	// Create a new client and connect to the server
	client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
	if err != nil {
		panic(err)
	}
}

Doesn't this block the thread until DB sends back a response? If not, how is that possible?

答案1

得分: 2

是的,这里有一个区别:

在Node中,除非你明确指定,否则一切都是非阻塞的,可以使用await或回调函数。

而在Go中,除非你明确指定,否则一切都是阻塞的,可以使用go关键字来指定非阻塞操作。

英文:

Yeah there's this difference:

In Node everything is not blocking until you say it otherwise, await or callabck.

In Go everything is blocking until you say it otherwise, go.

huangapple
  • 本文由 发表于 2022年7月1日 20:24:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/72829230.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定