commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marco Speranza <marcospera...@apache.org>
Subject Re: [Graph] Test problems after last commit
Date Sat, 03 Mar 2012 00:16:34 GMT
I think that we have to use the same patter of java Collections: a wrapper of Graph/MutableGraph
that use a synchronize block.

WDYT?

--
Marco Speranza <marcosperanza@apache.org>
Google Code: http://code.google.com/u/marco.speranza79/

Il giorno 03/mar/2012, alle ore 01:10, Simone Tripodi ha scritto:

> OK now sounds better, thanks - how would you intend to fix it?
> TIA,
> -Simo
> 
> http://people.apache.org/~simonetripodi/
> http://simonetripodi.livejournal.com/
> http://twitter.com/simonetripodi
> http://www.99soft.org/
> 
> 
> 
> On Sat, Mar 3, 2012 at 1:01 AM, Marco Speranza <marcosperanza@apache.org> wrote:
>>>> 
>>>> furthermore there is another problem: with handler is not possible to use
correctly synchronization block like this
>>>> 
>>>> ====
>>>> Graph g = CommonsGraph.synchronize(g_);
>>>>     ...
>>>>  synchronized(g) {
>>>>       for ( BaseLabeledVertex v2 : g.getVertices() )
>>>>       {
>>>>           // do somethings
>>>>       }
>>>>  }
>>>> ====
>>> 
>>> sorry I don't understand what you meant/intend to do
>> 
>> I'm trying to explain better. the method getVertices return an Iterator. In a multi-thread
environment you have to ensure that during the 'for' execution the [graph] data structure
remains  consistent.
>> Also for java collection is the same [http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#synchronizedCollection(java.util.Collection)]
>> 
>> So if we use a proxy/handler there is no way to "export" the mutex/lock variable
used into handler class.
>> 
>> In  our CommonsGraph the variable this.lock is private and is non possible to export
out of the method, so the user can not utilize the lock to synchronize his block.
>> 
>> ===
>>        public Object invoke( Object proxy, Method method, Object[] args )
>>            throws Throwable
>>        {
>>            if ( synchronizedMethods.contains( method ) )
>>            {
>>                try
>>                {
>>                    synchronized ( this.lock )
>>                    {
>>                        return method.invoke( synchronizedMethods, args );
>>                    }
>>                }
>>                catch ( InvocationTargetException e )
>>                {
>>                    throw e.getTargetException();
>>                }
>>            }
>>            return method.invoke( synchronizedMethods, args );
>>        }
>> ===
>> 
>> ciao
>> 
>> --
>> Marco Speranza <marcosperanza@apache.org>
>> Google Code: http://code.google.com/u/marco.speranza79/
>> 
>> Il giorno 03/mar/2012, alle ore 00:45, Simone Tripodi ha scritto:
>> 
>>>> furthermore there is another problem: with handler is not possible to use
correctly synchronization block like this
>>>> 
>>>> ====
>>>> Graph g = CommonsGraph.synchronize(g_);
>>>>     ...
>>>>  synchronized(g) {
>>>>       for ( BaseLabeledVertex v2 : g.getVertices() )
>>>>       {
>>>>           // do somethings
>>>>       }
>>>>  }
>>>> ====
>>> 
>>> sorry I don't understand what you meant/intend to do
>>> 
>>>> I really think that a synchronized wrapper it's the best solution.
>>>> 
>>>> WDYT?
>>> 
>>> they sucks because we have to keep them updated while , but if there
>>> are not alternatives...
>>> -Simo
>>> 
>>> http://people.apache.org/~simonetripodi/
>>> http://simonetripodi.livejournal.com/
>>> http://twitter.com/simonetripodi
>>> http://www.99soft.org/
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>>> For additional commands, e-mail: dev-help@commons.apache.org
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> For additional commands, e-mail: dev-help@commons.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message