Concurrency 此webapp代码是否需要同步?
我正在学习Go,这是我正在编写的一个web应用程序的代码:Concurrency 此webapp代码是否需要同步?,concurrency,go,goroutine,Concurrency,Go,Goroutine,我正在学习Go,这是我正在编写的一个web应用程序的代码: func init() { db, err := sql.Open("mysql", "master:123456@/shopping_list") if err != nil { panic(err.Error()) } http.HandleFunc("/sql", func(w http.ResponseWriter, r *http.Request) { sq
func init() {
db, err := sql.Open("mysql", "master:123456@/shopping_list")
if err != nil {
panic(err.Error())
}
http.HandleFunc("/sql", func(w http.ResponseWriter, r *http.Request) {
sqlHandler(w, r, db)
})
}
sqlHandler()
从购物列表中的表中读取记录,对其进行编辑,然后更新该记录
据我所知,每个请求都在一个单独的goroutine上运行,mysql在读取或写入记录时锁定一条记录。那么,在这种情况下,这个代码需要任何同步吗?简短回答:不需要。
您不需要显式同步代码,因为对db
上任何需要锁的方法的调用都将被阻塞,直到锁被释放。换句话说,同步由实际需要同步的软件包负责
作为补充说明,我建议您运行您的代码,这将使其他阅读您的代码的疯子感到高兴