[erlang-questions] questions about gen_server behaviour
Ming Zhao(Jimmy)
zhaoomingg@REDACTED
Fri May 25 15:08:48 CEST 2007
Thanks very much , its now pretty clear ~~
just didnt know the mechanism behind~~~
On 5/25/07, Ulf Wiger (TN/EAB) <ulf.wiger@REDACTED> wrote:
>
>
> A synchronous request is similar to
>
> call(Server, Request) ->
> MonRef = erlang:monitor(process, Server),
> Msg = {'$gen_call', {self(), MonRef}, Request},
> Server ! Msg,
> receive
> {MonRef, Reply} -> Reply;
> {'DOWN', MonRef, _, _, _} -> erlang:error(...);
> after 5000 ->
> erlang:error(timeout
> end.
>
> (The actual code is a little bit more contrived.)
>
> A cast is simply:
>
> cast(Server, Msg) ->
> Server ! {'$gen_cast', Msg},
> ok.
>
> So to answer your question, the gen_server sends the reply in the case
> of a synchronous call.
>
> The 'ok' in cast is not _sent_, it is simply the return value from the
> cast/2 function.
>
> With a call, you get actual acknowledgment from the server that the
> request was received and processed. With cast, you have no such information.
> The message may have been received and understood, but you cannot know that.
>
> Cast is also asynchronous, while call isn't. Call gives a form of flow
> control.
>
> BR,
> Ulf W
>
> ------------------------------
> *From:* erlang-questions-bounces@REDACTED [mailto:
> erlang-questions-bounces@REDACTED] *On Behalf Of *Ming Zhao(Jimmy)
> *Sent:* den 25 maj 2007 14:46
> *To:* erlang-questions@REDACTED
> *Subject:* [erlang-questions] questions about gen_server behaviour
>
> Could anyone explain these two functions below in details (better with
> example)?
> 1.synchronous request ----call
> Makes a synchronous call to the gen_server by sending a request and
> waiting until a reply arrives or a timout occurs.
> who sends the reply? what exactly is the reply?
> 2.asynchronous request ----cast
> Sends an asynchronous request to the gen_server and returns ok immediately
> who sends the ok?
>
> these 2 functions seems to me the same ,
> so confused by them ..
>
> BR
> Thanks
> Jimmy
>
> --
> Ming Zhao
> Dobelnsgatan 2C 231
> 752 37 Uppsala, SWE
>
> Email: zhaoomingg@REDACTED
> Tel: +46 (0)736964077
> MSN:
> zhaoomingg@REDACTED
> Skype: zhaoomingg
>
>
--
Ming Zhao
Dobelnsgatan 2C 231
752 37 Uppsala, SWE
Email: zhaoomingg@REDACTED
Tel: +46 (0)736964077
MSN:
zhaoomingg@REDACTED
Skype: zhaoomingg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070525/f9aad776/attachment.htm>
More information about the erlang-questions
mailing list