[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