【问题标题】:Why is Go connecting to a database synchronously?为什么 Go 同步连接到数据库?
【发布时间】:2022-07-01 20:28:31
【问题描述】:

我来自 Node 背景,并试图通过查看代码示例进入 Go。

我确实觉得代码大部分是同步的很奇怪——甚至像连接和与数据库通信这样的事情,例如

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)
    }
}

在 DB 发回响应之前,这不会阻塞线程吗?如果不是,那怎么可能?

【问题讨论】:

  • Doesn't this block the thread until DB sends back a response? 是的。 I do find it weird that code is mostly synchronous 不同语言的工作方式不同。
  • 为什么不同步?如果你想同时做一些事情,你必须相应地编写代码。使用具有并发或线程支持的语言不会神奇地编译成高度并发的二进制文件

标签: go


【解决方案1】:

是的,有这个区别:

在 Node 中,一切都不会阻塞,除非您另有说明 await 或 callabck。

在 Go 中,一切都在阻塞,除非你说否则 go

【讨论】:

    猜你喜欢
    • 2013-11-20
    • 2013-09-16
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2018-03-01
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多