J'écris une application web golang. L'application Web accède au système de fichiers (lecture et écriture) et à un fichier de base de données sqlite3.Synchronisation dans une application Web Go-lang
Question 1: Comment puis-je synchroniser l'accès au système de fichiers dans Go?
type DataObject struct {
data []byte
}
func (*d DataObject) Write() {
//
// Synchronization ?
//
ioutil.WriteFile("file.name", d.data, 0644)
//
// Stop synchronization ?
//
}
Question 2: Ai-je besoin de synchroniser l'accès aux fichiers de base de données 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
}
J'utilise le pilote gosqlite3 (http://code.google.com/p/gosqlite/).
+1 C'est mieux que ma réponse ;-) –
Merci. Je suppose qu'une application Web dans Go est simultanée, et chaque demande est traitée dans une nouvelle routine go, donc je devrais synchroniser? – Kiril
Oui, chaque requête http s'exécute dans son propre goroutine, vous devez donc les synchroniser ou utiliser un goroutine "helper" séparé (avec des canaux) pour gérer les éléments qui doivent être sérialisés. –