[erlang-questions] Intrusive function intercept

Kostis Sagonas kostis@REDACTED
Thu Oct 10 10:15:35 CEST 2013


On 10/10/2013 10:02 AM, Tyron Zerafa wrote:
> Hi,
>      I would like to monitor a process and suspend the execution of
> certain functions to perform some other computation before. For instance
> consider a process A which executing the following simple function.
>
> test() ->
>      x(),
>      y(),
>      z().
>
> I would like to initiate a process, B, that monitors the execution of A.
> I want B to:
>    1) stop A before function y is executed
>    2) execute some logic
>    3) resumes the execution of A (by executing Y and Z)

How about changing that code to receive an appropriate message from B at 
the point(s) you want it to "execute that logic"?  Something like:

   test() ->
       x(),
       %% B ! {done,x},             % optionally inform B that x is done
       receive
           {cont_msg, Fun} -> Fun() % execute the logic
       end,
       y(),
       z().

Wouldn't that work?

Kostis



More information about the erlang-questions mailing list