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

Ulf Wiger ulf@REDACTED
Thu Jul 24 13:19:06 CEST 2008


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