aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/race_SUITE_data/src/whereis_diff_vars_race.erl
blob: 90791de1b2e65d7063d8c115d4808d29a62cf8c9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
%% This tests that the race condition detection between whereis/register
%% is robust even when the functions are called with different variables
%% as arguments.

-module(whereis_diff_vars_race).
-export([test/2]).

test(AnAtom, AnotherAtom) ->
  Fun = fun () -> foo end,
  {aux(AnAtom, AnotherAtom, Fun), aux(AnotherAtom, AnAtom, Fun)}.

aux(Atom1, Atom2, Fun) ->
  case whereis(Atom1) of
    undefined ->
      Pid = spawn(Fun),
      register(Atom2, Pid);
    P when is_pid(P) ->
      ok
  end.