[erlang-questions] gen_server vs gen_fsm
Mon Oct 8 11:13:07 CEST 2007
Thanks for the quick response, please see inline.
On 10/8/07, Chandru <> wrote:
> > A gen_fsm helps you implement the logic for a finite state machine.
> > You can implement a FSM using gen_server but gen_fsm makes it much
> > more easier and your code will be more structured and easier to read.
> > > * when should one use gen_fsm? and when should one use a gen_server?
> > Use a gen_server when you want a long lived process which reacts to
> > events. Use a gen_fsm to implement state machines. See
> > http://en.wikipedia.org/wiki/Finite_state_machine
When I think of state machine two primary types of example comes to mind:
1) the machine will generate the end result in one call as the input stream
contains enough information to allow the machine to finish its processing;
for example, a regular expression match
2) the machine will reach its end state only after multiple calls as each
call changes the state; for example, an e-commerce website.
Which type is gen_fsm suited for? To me, the 1st type is not a server,
where the second type is, and hence my confusion about its suitability. As
you say that gen_server is better suited for long lived processes, is
gen_fsm not suited to implement the logic behind an e-commerce site?
> A web server's worker process doesn't have to be a gen_server or a
> > gen_fsm. It just needs to be a module which given the HTTP request,
> > does some processing and returns some content to the HTTP client.
I see. Are there disadvantages to use gen_server or gen_fsm in this case?
> > * what's a good way to test the spawning to make it that it works? I
> > > are there available tools to simplify the process?
> > Sorry - I don't understand your question.
Sorry - I simply meant to ask if there are tools within Erlang that would
help with simulating load testings, such as the ab tool.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions