After checking out Gen_Fsm and Gen_Server documents, I found that, more or less, they act as similar behavior. In my opinion, if there is one loop function for sending broadcast or listening tcp sock, it is better to use Gen_Fsm, or else to use gen_server. i want to know whether it is right ?
Related Questions in ERLANG
- Using gleam, cannot import 'gleam/otp/process'
- Zig Concurrency Vs Erlang Concurrency, is Zig less efficient than Erlang?
- Creaating a new Key Value dict from previous dict
- How to execute an exit function before closing rebar3 shell?
- rebar3 does not compile anything in `src` directory
- Ejabberd Migration from 23 to 24
- How to use compiled erlang modules in an elixir project?
- ejabberd_sql:handle_reconnect/2:491 odbc connection failed ejabberd
- Lisp Flavored Erlang: Can't find include lib include/ltest-macros.lfe
- Signing key for RabbitMQ
- Rabbitmq fails to start and getting Erlang eaacces error
- Erlang: binary_to_term explanation
- How to extend emqx clientInfo to get more fields during HTTP Authorization
- Transforming `erl_parse:abstract_form()` to `erl_syntax:syntaxTree()`
- Who is the sender of Erlang's trace messages and what can I assume based on it?
Related Questions in GEN-SERVER
- How can i realise queue system in message broker on Elixir using genServer?
- {noproc,{gen_server{call.... Error in simple rebar3/Erlang application with a gen_server
- Issue with running a compiled rebar3 erlang application with erl -pa
- Can the GenServer `handle_continue` callback directly be invoked from another process?
- What would be an idiomatic and semantic way to make integration tests on this Elixir GenServer?
- DynamicSupervisor.start_child(...) ----> error > already started
- How to create an Elixir GenServer timed event at 12am every night
- Why does gen_server:reply/2 work in some instances while causing timeouts in others
- Is there a way to make_ref() for spawned processes in erlang?
- Pop functionality in stack server with OTP (Elixir)
- Elixir - Catching :enetunreach and :ehostunreach errors
- Using Interceptor to add logging to GenServer
- How to launch this Supervised GenServer as application
- Why does this Supervisor not start the Genserver?
- Elixir Supervisor "supervise" and "worker" deprecation errors
Related Questions in GEN-FSM
- Converting Learn You Some Erlang tutorial from gen_fsm to gen_statem
- erlang:send_after message delay
- Using more than one erlang behaviour
- How can I know when it's the last cycle of my process restarted by the supervisor in erlang
- Which Erlang behaviour i.e. gen_server or gen_fsm should I use in this case
- Pass control from one gen_fsm to another
- Erlang - Exception exit on supervisor and gen_fsm
- Can i use "sender" in Akka FSM code?
- handle illegality events while not clearing timeout in gen_fsm behaviour
- Ensure that gen_fsm/gen_server process exists while sending a message
- Change gen_fsm state to a function in a different module
- eunit test for timeout
- how to transfer gen_server/gen_fsm from node to node
- gen_fsm erlang timeout
- Terminate gen_fsm if no event come
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
You have seen right that
gen_serverandgen_fsmare very similar in functionality.However in most programs there is much more
gen_serverthangen_fsmusage.In my opinion
gen_fsmis only useful when the usage 100% fits the gen_fsm model. So there has to be a simple and clear finite state machine that fits to your problem. Be aware that usually FSM's state count tends to explode in the face of the real world.If you find yourself having lots of secondary state information in
gen_fsm'sStatevariable its probably time to switch togen_serverand addgen_fsm' s state to theStatevariable.Generally when in doubt: use
gen_serverOne disadvantage of both
gen_serverandgen_fsm(which comes out worse ingen_fsmusually) is that you can't use selective receive. Selective receive is a important tool for reducing state machine complexity in real world applications.To have the advantage of both selective receive and OTP behaviours I'd recommend plain_fsm.