From 27dba903efe1723c1ea4fd4e9e4d2f45935ccec8 Mon Sep 17 00:00:00 2001 From: Gregory Burd Date: Tue, 30 Jul 2013 13:20:49 -0400 Subject: [PATCH] The ref needs to be in-scope of the recieve for it to be optimized. --- src/async_nif.hrl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/async_nif.hrl b/src/async_nif.hrl index 9034d8a..2b9d85c 100644 --- a/src/async_nif.hrl +++ b/src/async_nif.hrl @@ -23,6 +23,7 @@ -spec async_nif_enqueue(reference(), function(), [term()]) -> term() | {error, term()}. async_nif_enqueue(R, F, A) -> + R = erlang:make_ref(), case erlang:apply(F, [R|A]) of {ok, enqueued} -> receive @@ -44,4 +45,4 @@ async_nif_enqueue(R, F, A) -> Other end. --define(ASYNC_NIF_CALL(Fun, Args), async_nif_enqueue(erlang:make_ref(), Fun, Args)). +-define(ASYNC_NIF_CALL(Fun, Args), async_nif_enqueue(Fun, Args)).