2
在設置我的標準牛仔web處理例程之前,我在我的開始(_StartType,_StartArgs) - >函數中初始化一個已命名的ets表。ets是否提供了一種方法來一次執行更新和讀取 - 就像增量操作一樣?
ETS:新的(req_stats,[named_table,公共]),ETS:插(req_stats,{req_count,0})
我有這樣的功能:
count_req()->
[{_,Cnt}]=ets:lookup(req_stats,req_count),
ets:insert(req_stats,Cnt+1),
Cnt+1.
我關注是這樣的;
如果我要求高負載下的每個web請求count_req(),我將最有可能最終與不準確的計數,因爲[{_,CNT}] = ETS:查找(req_stats,req_count)可能是更新幾次,然後我才返回Cnt + 1
是否提供了一種方法來執行更新&一次讀取 - 就像增量操作一樣?
謝謝。
謝謝!只是一個快速編輯,ets表必須公開我的工作方式,除了update_counter工作正常。 –
只是想檢查是否有可能也插入一個密鑰與默認值。或者如何update_counter與默認工作 –
@OlegTarasenko當我第一次寫答案是不可能的,但現在它是:)我用一個例子更新了答案。 – legoscia