gen_server and priority queues

Dominic Williams <>
Mon Oct 24 23:08:31 CEST 2005


Richard Cameron wrote:
> 
> I want to implement a server which processes messages in order of  
> priority. I know I can do this in pure Erlang as:
> 
> handle(high, State) ->
>     receive {high,Msg} ->
>             do(Msg,State)
>     after 0 ->
>             handle(medium, State)
>     end;
> handle(medium, State) ->
>     receive {medium,Msg} ->
>             do(Msg, State)
>     after 0 ->
>             handle(low, State)
>     end;
> handle(low, State) ->
>     receive {_,Msg} ->
>             do(Msg, State)
>     end.

Isn't this overkill? I was under the impression that:

receive
   {high, Msg} ->
      ...;
   {medium, Msg} ->
      ...;
   {low, Msg} ->
      ...;
end,

pulls higher priority messages out of the queue?

Cheers,

Dominic Williams
http://www.dominicwilliams.net

----



More information about the erlang-questions mailing list