[erlang-questions] Erlang way for process-as-library?

Torbjorn Tornkvist <>
Mon Feb 5 23:43:01 CET 2007


Either let the users of the library start it with
a start function or you could let every function
do it automatically. Example:

start() ->
  case whereis(my_service) of
    Pid when pid(Pid) -> Pid
    _ -> spawn(my_mod, my_server, [])
  end.

lib_fun_1(A1, A2,...) ->
  start(),
  gen_server:call(....).

lib_fun_2(A1, A2,....) ->
  start(),
  gen_server:call(...).

I would probably prefer to only have the start function and
let the users of the library call it. Such as in e.g:

 crypto:start()


Cheers, Tobbe

Robert Baruch wrote:
> Hi all,
> 
> So I'm fooling around with writing a utility library, but to  
> initialize the library takes a little bit of time, needing to read a  
> few large files into memory. So my idea was to stick the  
> functionality into a process, so that the library could be  
> initialized once and then used by the application.
> 
> I've added the gen_server behavior to the process. So now my question  
> is, what's the Erlang way to start the process? Should I start it  
> supervised, with a supervisor running somewhere explicitly, and  
> require the user to know that they have to start up a supervisor?  
> Should I start it unsupervised, checking in every call to the library  
> whether the library is running, and if not, start it?
> 
> Help, please :)
> 
> Thanks,
> 
> --Rob




More information about the erlang-questions mailing list