gorilla是用golang寫的web工具箱,裏面提供了一系列的工具。在用golang開發web中,搭配gorilla能夠加快整個開發的進程。gorilla的官網在這裏,代碼託管在github,這裏要看的是gorilla/context。git
在context文件夾裏面,有個context.go文件,裏面就是context包主要的代碼。github
在context.go的開始部分,聲明瞭幾個全局變量,golang
var ( mutex sync.Mutex data = make(map[*http.Request]map[interface{}]interface{}) datat = make(map[*http.Request]int64) )
而後下面定義了Set(),Get(),Delete(),Clear(),Purge(),ClearHandler()等函數,裏面的內容主要是處理data和datat變量裏面的數據。爲了知足併發的需求,使用了鎖機制。web
在這裏,我想到了設計模式中的單例模式。在維基百科中文裏面,有單例模式的定義,網頁在這裏設計模式
單例模式,也叫單子模式,是一種經常使用的軟件設計模式。在應用這個模式時,單例對象的類必須保證只有一個實例存在。許多時候整個系統只須要擁有一個的全局對象,
這樣有利於咱們協調系統總體的行爲。
gorilla/context包就很明顯應用了單例模式,使用鎖保證數據的正確性。在golang中應用,應用單例模式,能夠參考gorilla/context包的寫法。併發
轉貼請註明來自:格通函數