[erlang-questions] C nodes and select loops

Serge Aleynikov <>
Wed Nov 14 18:18:56 CET 2012


Unfortunately this is a shortcoming of the erl_interface library - it
doesn't offer any non-blocking alternatives of socket-handling functions
(e.g. erl_connect and erl_receive_msg).

If you need that and are flexible about using C++ in your project, you can
consider the following project which implements asynchronous communication
with Erlang nodes:

https://github.com/saleyn/eixx

Serge

On Wed, Nov 14, 2012 at 11:05 AM, David Welton <> wrote:

> Hi,
>
> I expected to find an answer to this one via Google, but I didn't.
>
> I'm looking at the C node example, and it does:
>
>     while (loop) {
>         got = erl_receive_msg(fd, buf, BUFSIZE, &emsg);
>
> Which is ok if you can sit around waiting on incoming Erlang messages,
> but say you want to work with a select loop (or whatever form of
> polling/events) where you can get events from other places, as well as
> from other Erlang nodes.
>
> The ei_connect man page says:
>
>        As with all other ei functions, you are not expected to put the
>  socket
>        in non blocking mode yourself in the program. Every use of non
> blocking
>        mode is embedded inside the timeout functions. The socket  will
>  always
>        be back in blocking mode after the operations are completed
> (regardless
>        of the result). To avoid problems, leave the socket options  alone.
>  Ei
>        will handle any socket options that need modification.
>
> That makes me a bit wary...  Granted, there are the _tmo options, but
> I just wanted to ask around for advice on best practices for something
> like this.
>
> Thanks
> --
> David N. Welton
>
> http://www.dedasys.com/
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20121114/b5115ac7/attachment.html>


More information about the erlang-questions mailing list