2
這個閱讀最好的辦法就是從這裏開始的延續:Golang: Shared communication in async http serverGolang:從一個HashMap W /互斥
假設我有一個HashMap瓦特/鎖定:是寫這將會把
//create async hashmap for inter request communication
type state struct {
*sync.Mutex // inherits locking methods
AsyncResponses map[string]string // map ids to values
}
var State = &state{&sync.Mutex{}, map[string]string{}}
功能鎖。我的問題是,什麼是最好的/最快的方式有另一個函數檢查一個值,而不會阻止寫入散列表?我想知道它上面有一個值。
MyVal = State.AsyncResponses[MyId]
我想我應該提到我將讀取的ID設置爲只能寫入一次,並且在被刪除之前只讀一次。這是該通話的唯一標識符。所以我應該每隔100毫秒檢查一次?如果在有鎖的情況下進行讀操作,讀操作如何處理? – kwolfe
@kwolfe:它取決於你的代碼的其餘部分,但很可能這些ID的通道比你的併發訪問地圖更適合你的任務。 – zzzz
我已經提交了一個示例應用程序,並且我指出了帶有互斥體的hashmap的方向。我本來喜歡能夠使用頻道,但我不知道它將如何實現。你會中期看看原來的帖子嗎? http://stackoverflow.com/questions/17890830/golang-shared-communication-in-async-http-server – kwolfe