[erlang-questions] How to extend mensia lock to support conditionally lock?

Ulf Wiger ulf@REDACTED
Thu Jul 24 16:03:50 CEST 2008


If you are to gain any performance compared to a wrapper, or using
only table locks, you must do brain surgery on  mnesia_locker. I
strongly advise against that. The relationship between record locks
and table locks is quite intricate.

BR,
Ulf W

2008/7/24, devdoer bird <devdoer2@REDACTED>:
> The example I give is not good.,but I just need hack the mnesia lock :(.
>
> I want to lock part of the table and which part is controled by the record's
> key's value range .Currently mnesia  only support record lock and table
> lock.
>
>
> 2008/7/24, Ulf Wiger <ulf@REDACTED>:
>>
>> I don't think you should hack mnesia for that. A simple wrapper
>> function will do nicely.
>>
>> BR,
>> Ulf W
>>
>> 2008/7/23, devdoer bird <devdoer2@REDACTED>:
>> > HI:
>> >
>> > I want to extend mnesia 's lock  to add this  function
>> > "mnesia:lock(LockItem,LockType,ConditionFun)" .
>> >
>> > This function works in this way: If a table 's record passes the
>> > ConditionFun test,the the record is locked.
>> >
>> > Eg.
>> > I have a user table with the record:  -record(user,{name,age}).
>> >
>> > I want to lock the user's whose name  begines with  'a' ,I can code
>> > using
>> my
>> > customized " mnesia:lock(LockItem,LockType,ConditionFun)"
>> >
>> > like this:
>> >
>> > ConditionFun=fun(U)->
>> >        if
>> >             U#user.name=='a' -> true;
>> >             true->false
>> >        end
>> > end
>> > mnesia:lock(user,write,ConditionFun).
>> >
>> > that is I want to lock part of the table.
>> >
>> > Have anyone done this before? How shall I extend the mensia lock? Any
>> > information will be  helpful, I 'm quite unfamiliar  with mnesia lock
>> > system.
>> >
>>
>



More information about the erlang-questions mailing list