標準のカウボーイ Web 処理ルーチンを設定する前に、 start(_StartType, _StartArgs) ->関数で名前付き ets テーブルを初期化します。
ets:new( req_stats ,[named_table,public]),ets:insert(req_stats,{ req_count ,0})
私はこの機能を持っています:
count_req()->
[{_,Cnt}]=ets:lookup(req_stats,req_count),
ets:insert(req_stats,Cnt+1),
Cnt+1.
私の懸念はこれです。
[{_,Cnt}]=ets:lookup(req_stats,req_count)が戻る前に数回更新される可能性があるため、高負荷の下で各 Web リクエストに対して count_req() を呼び出すと、不正確なカウントになる可能性が高くなります。カウント+1
ets は、インクリメント操作のように、更新と読み取りを一度に行う手段を提供しますか?
ありがとう。