aboutsummaryrefslogblamecommitdiffstats
path: root/lib/dialyzer/test/race_tests_SUITE_data/src/whereis_diff_vars_race.erl
blob: 7382d184dc2f8c62bc4197e6b4f8290656ea19b5 (plain) (tree)


















                                                                         
%% 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.