[erlang-questions] Process Dictionary limitations??
Charles Hixson
charleshixsn@REDACTED
Thu Oct 11 03:40:29 CEST 2012
On 10/10/2012 04:21 PM, Michael Truog wrote:
> On 10/10/2012 03:55 PM, Charles Hixson wrote:
>> I'm choosing a language to implement a ... well, neural network is
>> wrong, and so is cellular automaton, but it gives the idea. Anyway,
>> I'm going to need, in each cell, a few stateful items, e.g.
>> activation level.
>>
>> When I look at what Erlang can do, I see that the Process Dictionary
>> looks as if it would serve my needs, but then I am immediately warned
>> not to use it, that it will cause bugs. These stateful terms will
>> not be exported from the cell within which they are resident. Is
>> this still likely to cause problems? Is there some better approach
>> to maintaining state? (I can't just generate a new process, because
>> other cells will need to know how to access this one, or to test that
>> it has been rolled out.)
>>
> This explains some basics about the process dictionary:
> http://www.erlang.org/course/advanced.html#dict
> Quoted below:
>
> * Destroys referential transparency
> * Makes debugging difficult
> * Survives Catch/Throw
>
> So, it is much better to use variables, so side-effects are more
> explicit (i.e., function variables). This is the equivalent to the
> State variable of a gen_server behaviour
> (http://www.erlang.org/doc/man/gen_server.html). Depending on the
> expected state-handling, you might want a gen_server, a gen_event, or
> a gen_fsm for each cell. Otherwise, if you want to avoid OTP
> behaviour usage, you could just do plain Erlang code, but your code
> might then be more error-prone (especially since you are asking this
> question).
>
Thank you. That confirms the recommendation against using the process
directory, though I will admit that I can't see any way that your
proposed alternatives could replace it.
--
Charles Hixson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20121010/3f396552/attachment.htm>
More information about the erlang-questions
mailing list