2015-08-11 31 views
6

Uso Go e Gin per configurare il mio sito Web e desidero conoscere il tempo di accesso al database. Io uso goroutine quindi se non usi qualcosa come thread-local, devo cambiare quasi ogni funzione per farlo. Go ha un buon modo per farlo?Go ha qualcosa come ThreadLocal da Java?

+1

Non ha thread-local. Un'alternativa è passare un contesto per richiesta; [Gorilla] (http://www.gorillatoolkit.org/pkg/context) e [Google App Engine] (https://cloud.google.com/appengine/docs/go/reference#Context) ce l'hanno. E sì, si può finire per aver bisogno di passare attraverso un sacco di funzioni. – twotwotwo

risposta

6

Il runtime Go e le librerie standard non forniscono la memoria locale di goroutine o un identificatore di goroutine che può essere utilizzato per implementare la memorizzazione locale di goroutine.

Il pacchetto di terze parti gls implementa in modo interessante l'archiviazione locale di goroutine. Alcuni trovano questo pacchetto orribile e altri pensano che sia intelligente.

Il team di Go consiglia di passare esplicitamente il contesto come argomento di funzione invece di utilizzare la memoria locale di goroutine. Vedere lo context blog post e package documentation per ulteriori informazioni.

+0

Ho trovato gls, ma ho ancora bisogno di cambiare il codice con esso. Sembra che non ci sia modo di farlo senza cambiare la mia funzione. – modkzs