blob: 5f865d7b7ac24acd057ce14de7d94b5c56e4b2c7 (
plain) (
tree)
|
|
%%% -*- erlang-indent-level: 2 -*-
%%%-------------------------------------------------------------------
%%% Author: Kostis Sagonas
%%%
%%% Contains code examples that test correct handling of receives.
%%%-------------------------------------------------------------------
-module(basic_receive).
-export([test/0]).
test() ->
ok = test_wait_timeout(),
ok = test_double_timeout(),
ok = test_reschedule(),
ok.
%%--------------------------------------------------------------------
test_wait_timeout() ->
receive after 42 -> ok end.
%%--------------------------------------------------------------------
test_double_timeout() ->
self() ! foo,
self() ! another_foo,
receive
non_existent -> weird
after 0 -> timeout
end,
receive
foo -> ok
after 1000 -> timeout
end.
%%--------------------------------------------------------------------
%% Check that RESCHEDULE returns from BIFs work.
test_reschedule() ->
erts_debug:set_internal_state(available_internal_state, true),
First = self(),
Second = spawn(fun() -> doit(First) end),
receive
Second -> ok
end,
receive
after 42 -> ok
end,
erts_debug:set_internal_state(hipe_test_reschedule_resume, Second),
ok.
doit(First) ->
First ! self(),
erts_debug:set_internal_state(hipe_test_reschedule_suspend, 1).
%%--------------------------------------------------------------------
|