[asterisk-dev] [Code Review] Bridging API for Conference Bridge purposes

Vadim Lebedev vadim at mbdsys.com
Mon Feb 16 02:54:18 CST 2009


Le 16 févr. 09 à 04:08, Russell Bryant a écrit :

>
>
>> On 2009-02-01 04:12:00, vadim wrote:
>>> /trunk/main/bridging.c, lines 1023-1028
>>> <http://reviewboard.digium.com/r/93/diff/2/?file=2260#file2260line1023 
>>> >
>>>
>>>    I beleive that to avoid deadlocks one need to unlock objects in  
>>> the inverse order of locking
>>
>> wrote:
>>    Done.
>
> Just for the sake of discussion, the order that you unlock objects  
> doesn't actually matter.  I suppose it's probably good practice to  
> unlock in the reverse order that you locked, but reversing it can  
> not cause a deadlock.
>
>

Thread 1:    Lock A    Lock  B ,     Unlock  
A,                                 Lock A,  Unlock A,  Unlock B
Thread 2:                                                            
Lock A,   Lock B
                                                                             = 
=== Deadlock =======



Vadim

P.S.   If i remember correctly the partial ordering of resources is a  
valid deadlock prevention techinque


> - Russell
>
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.digium.com/r/93/#review348
> -----------------------------------------------------------
>
>
> On 2009-02-11 14:11:30, Joshua Colp wrote:
>>
>> -----------------------------------------------------------
>> This is an automatically generated e-mail. To reply, visit:
>> http://reviewboard.digium.com/r/93/
>> -----------------------------------------------------------
>>
>> (Updated 2009-02-11 14:11:30)
>>
>>
>> Review request for Asterisk Developers and Russell Bryant.
>>
>>
>> Summary
>> -------
>>
>> This patch implements the new bridging API and brings with it a  
>> module for conference bridges. It does *not* replace existing  
>> internal bridging or features yet and will not cause any  
>> regressions when put in. It will essentially be introduced as a  
>> first test phase to work out any unforeseen critical issues. The  
>> bridging core itself is fully implemented besides the following:  
>> jitterbuffer support, native bridging, and interval hooks (hooks  
>> that are time based versus action based). If you would like an  
>> explanation of what the bridging API is made up of and how it works  
>> that can be found in the bridging.h header file.
>>
>>
>> Diffs
>> -----
>>
>>  /trunk/Makefile 174884
>>  /trunk/apps/app_confbridge.c PRE-CREATION
>>  /trunk/bridges/Makefile PRE-CREATION
>>  /trunk/bridges/bridge_builtin_features.c PRE-CREATION
>>  /trunk/bridges/bridge_multiplexed.c PRE-CREATION
>>  /trunk/bridges/bridge_simple.c PRE-CREATION
>>  /trunk/bridges/bridge_softmix.c PRE-CREATION
>>  /trunk/channels/chan_bridge.c PRE-CREATION
>>  /trunk/include/asterisk/bridging.h PRE-CREATION
>>  /trunk/include/asterisk/bridging_features.h PRE-CREATION
>>  /trunk/include/asterisk/bridging_technology.h PRE-CREATION
>>  /trunk/include/asterisk/channel.h 174884
>>  /trunk/main/Makefile 174884
>>  /trunk/main/bridging.c PRE-CREATION
>>
>> Diff: http://reviewboard.digium.com/r/93/diff
>>
>>
>> Testing
>> -------
>>
>> Conference bridge testing using app_confbridge with features.  
>> Joining two channels with simple frame exchange and joining three  
>> channels to move it to a true conference bridge. IVR capability of  
>> app_confbridge was also tested.
>>
>>
>> Thanks,
>>
>> Joshua
>>
>>
>




More information about the asterisk-dev mailing list