英文:
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
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论