threads - use them as much as you can

Ulf Wiger <>
Mon Nov 27 17:41:21 CET 2000


On Mon, 27 Nov 2000, Thomas Lindgren wrote:

>A related problem is how to construct a simple, guaranteed read-modify-write
>function on a (public) ets-table, even involving a single location. 
>Is there some way to do that in Erlang without involving mnesia?
>(Needless to say, I've fiddled a bit with this and failed.)

We've suggested a simple mutex lock on the ets table, such that 

ets:mutex(Table, F = fun()) is thread safe, assuming that all
accesses to Table are mutex:ed.

One use for this would be implementing modulo counters based on
ets:update_counter/3.

A problem of course arises if F doesn't stick to one table. Then you
get into deadlock territory. If you didn't allow nested mutex:es,
you'd be a bit better off. 

/Uffe
-- 
Ulf Wiger                                    tfn: +46  8 719 81 95
Senior System Architect                      mob: +46 70 519 81 95
Strategic Product & System Management    ATM Multiservice Networks
Data Backbone & Optical Services Division      Ericsson Telecom AB




More information about the erlang-questions mailing list