[asterisk-dev] Channel locking mechanism in Asterisk

Mark Michelson mmichelson at digium.com
Mon Nov 1 09:29:19 CDT 2010


On 11/01/2010 05:06 AM, chaitra.bhat at lakecommunications.com wrote:
>
> Hi All,
>
> We use Asterisk version 1.4.22 in our PBX product. But we have seen 
> that the locking mechanism that exists in the channel code today is 
> highly inefficient and CPU consuming. Also, if not careful with the 
> locks order, can lead to deadlocks.
>
> So, was wondering if anything has changed with regard to this in the 
> later versions of Asterisk (1.4 or 1.6). There were talks of 
> introducing a reference counting mechanism - was this implemented?
>
> If I see channel.c and lock.h in 1.4.36, I do not see any changes 
> there wrt the locking mechanism. And in ver 1.6.2, except for the RW 
> locks, I do not see any other difference.
>
> Can somebody tell me what changes were introduced in Asterisk 1.6 to 
> manage and debug the locking of the channels efficiently please?
>
> Thanks,
>
> -Bhatc

You're not going to find any major changes to the channel structure in 
the 1.6.X series. In the recently released 1.8 series, the ast_channel 
structure has been converted to a reference-counted object and is stored 
in a hash table instead of a linked list. The biggest gain here is 
quicker lookups of channels. Regarding locking mechanisms, there's not 
much change there, so you still need to be careful and respect the 
defined locking order. There were a small set of cases where a channel 
lock was replaced by grabbing a reference to the channel instead, but 
there may be 2 or 3 cases of this total in the whole code base.

Mark Michelson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20101101/55893221/attachment-0001.htm 


More information about the asterisk-dev mailing list