我在写一个golang web应用程序。 Web应用程序访问文件系统(读写)和sqlite3数据库文件。Go-lang网络应用程序中的同步
问题1:如何在Go中同步文件系统访问?
type DataObject struct {
data []byte
}
func (*d DataObject) Write() {
//
// Synchronization ?
//
ioutil.WriteFile("file.name", d.data, 0644)
//
// Stop synchronization ?
//
}
问题2:我需要同步sqlite3的数据库文件的访问?
type SqlObject struct {
sqldata string
}
func (*s SqlObject) Store() error {
//
// Open the file, do I need some sort of synchronization?
//
con, err := sqlite.Open("database/datafile.db")
if err != nil {
return err
}
defer con.Close()
err = con.Exec("INSERT INTO data(sqldata) values(?)", s.sqldata)
if err != nil {
return err
}
return nil
}
我使用gosqlite3驱动程序(http://code.google.com/p/gosqlite/)。
+1这比我的回答好;-) – 2013-02-08 20:24:29
谢谢。我假设Go中的一个Web应用程序是并发的,并且每个请求都在一个新的例程中处理,因此我应该同步? – Kiril 2013-02-09 12:50:45
是的,每个http请求都在它自己的goroutine中运行,因此您必须在它们之间进行同步,或者使用单独的“helper”goroutine(带通道)来处理需要序列化的内容。 – 2013-02-21 18:04:26