英文:
Should I use some blocking mechanisms with async access to DB
问题
我正在使用gorm和Postgres在Go中编写一个异步聊天机器人。当使用gorm数据库客户端时,我是否需要使用一些阻塞机制,或者我可以安全地避免使用互斥锁等。例如,我在不同的goroutine中使用gorm数据库客户端。类似这样的代码:
func () {
db.Update(...)
}
英文:
I'm writing an async chatbot in Go with gorm and Postgres. Should I some blocking mechanism when using the gorm db client or I may safely avoid mutexes or etc. For example, I'm using gorm db client in different goroutines. Something like:
func () {
db.Update(...)
}
答案1
得分: 2
你不需要这样做。从官方的database/sql
文档(gorm封装的)中可以看到(强调添加):
返回的DB对象可以安全地被多个goroutine并发使用,并且维护着自己的空闲连接池。因此,应该只调用一次OpenDB函数。关闭DB对象很少是必要的。
英文:
You don't need to do that. From the official database/sql
docs (which gorm wraps), we can see (emphasis added):
> The returned DB is safe for concurrent use by multiple goroutines and maintains its own pool of idle connections. Thus, the OpenDB function should be called just once. It is rarely necessary to close a DB.
答案2
得分: 2
你可以在Gorm网站上看到,它声明Gorm并发是安全的,因此不需要阻塞它。
英文:
As you can see on the Gorm website, it states that the Gorm concurrent is safe, therefore, there is no need to block it.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论