On 08/20/2012 02:50 PM, Jean-Yves Tinevez wrote:
Hi Stephan

Just to be sure I got your point:

You mean that if we iterate over all the neighbohoods of a single final
image in a multithreaded way, we might screw up with the unsafe
implementations right? In a pseudo code, this:

for (int i =0; i < nThreads, i++) {
   threads[i] = new Thread() {

     public void run() {

              for ( Neighborhood<T> n : chunks)
                     for ( T t : n )
           ...
...
...

would always fail with the unsafe implementation and always work with
safe implementations? Right??

Hi Jean-Yves,

No. That would work in all cases, because the outer loop
for ( Neighborhood<T> n : chunks) uses one Cursor<Neighborhood<T>> and those are just completely normal cursors.


What would be problematic would be something like:

for ( Neighborhood<T> n : chunks)
   parallel( n );

void paralled( IterableInterval<T> iterable )
{
   for (int i =0; i < nThreads, i++) {
      threads[i] = new Thread() {
      public void run() {
         for ( T t : iterable )
             ...
}

because every thread would get the same Cursor<T> for the unsafe
variant.

best regards,
Tobias

_______________________________________________
ImageJ-devel mailing list
[email protected]
http://imagej.net/mailman/listinfo/imagej-devel

Reply via email to