在设置标准 Cowboy 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.
我担心的是这个;
如果我在高负载下为每个 Web 请求调用 count_req(),我很可能会得到一个不准确的计数,因为[{_,Cnt}]=ets:lookup(req_stats,req_count)在我返回之前可能会更新几次计数+1
ets 是否提供了一种一次性进行更新和读取的方法——比如增量操作?
谢谢。