我正在使用gorm和Postgres在Go中编写一个异步聊天机器人。我应该在使用gorm db客户端时使用一些阻塞机制,或者我可以安全地避免互斥锁等。例如,我正在使用不同的goroutines中的gorm db客户端。类似于:
func () { db.Update(...) }
kkbh8khc1#
你不需要这样做。从官方的database/sql文档(gorm Package )中,我们可以看到(重点添加):
database/sql
返回的DB对于多个goroutine并发使用是安全的,并维护自己的空闲连接池。因此,OpenDB函数只需调用一次。很少需要关闭DB。
hjqgdpho2#
正如你在Gorm网站上看到的,它声明Gorm并发是安全的,因此,没有必要阻止它。
2条答案
按热度按时间kkbh8khc1#
你不需要这样做。从官方的
database/sql
文档(gorm Package )中,我们可以看到(重点添加):返回的DB对于多个goroutine并发使用是安全的,并维护自己的空闲连接池。因此,OpenDB函数只需调用一次。很少需要关闭DB。
hjqgdpho2#
正如你在Gorm网站上看到的,它声明Gorm并发是安全的,因此,没有必要阻止它。