[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