Hi all,
I use $sht() pseudo-variabled provided by htable module for caching various information about sip customers. I thought that htable has some locking mechanism inside it and today while i was reading core-cookbook i payed attention to one example with the lock/unlock functions and $sht():
lock("calls-to::10.10.10.10"); $sht(a=>calls-to::10.10.10.10) = $sht(a=>calls-to::10.10.10.10) + 1; unlock("calls-to::10.10.10.10");
According to that example an explicit locking mechanism should be used when i want to write something to a hash table. On the other hand there are no locks in htable documentation.
So the question is when do the explicit locks should be used and for what purpose ?
Hello,
On 6/29/12 11:07 PM, Vitaliy Aleksandrov wrote:
Hi all,
I use $sht() pseudo-variabled provided by htable module for caching various information about sip customers. I thought that htable has some locking mechanism inside it and today while i was reading core-cookbook i payed attention to one example with the lock/unlock functions and $sht():
lock("calls-to::10.10.10.10"); $sht(a=>calls-to::10.10.10.10) = $sht(a=>calls-to::10.10.10.10) + 1; unlock("calls-to::10.10.10.10");
According to that example an explicit locking mechanism should be used when i want to write something to a hash table. On the other hand there are no locks in htable documentation.
So the question is when do the explicit locks should be used and for what purpose ?
reading and writing in hash table is under the lock. But the increment operation as it is presented above requires first to read and then to write -- for that is recommended you use a lock to avoid races.
If it is just increment/decrement operation in htable, then you can use $shtinc(...)/$shtdec(...) for it:
http://www.kamailio.org/wiki/cookbooks/3.3.x/pseudovariables#shtinc_htable_k...
Cheers, Daniel