1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
%% This tests that the race condition detection between ets:lookup/
%% ets:insert is robust even when the functions are called with
%% different atoms as arguments.
-module(ets_insert_diff_atoms_race3).
-export([test/0]).
test() ->
ets:new(foo, [named_table, public]),
{race(foo), no_race(foo)}.
race(Tab) ->
[{_, N}] = ets:lookup(Tab, counter),
aux(Tab, N).
no_race(Tab) ->
[{_, N}] = ets:lookup(Tab, counter),
AnotherTab = bar,
aux(AnotherTab, N).
aux(Table, N) ->
ets:insert(Table, {counter, N+1}).
|