[vtkusers] stenciling problem-- is this code thread safe?

David Gobbi david.gobbi at gmail.com
Fri Feb 11 12:23:38 EST 2011


Hi Mark,

Explain in more detail what you mean by "call from multiple threads".
VTK is, in general, not thread safe and you cannot call Update() on
a filter from more than one thread.  Each thread needs to have its own
set of filters.  And in general, you cannot feed a data object into more
than one thread, because even simple methods like GetBounds() are
not thread safe.

When using VTK from multiple threads, it is necessary to apply
extreme caution.

  - David


On Fri, Feb 11, 2011 at 10:00 AM, Mark Roden <mmroden at gmail.com> wrote:
> Hi all,
>
> This code does not have threads enabled in vtk 5.6.1 (the code is in Java):
>
>        vtkLinearExtrusionFilter extruder = new vtkLinearExtrusionFilter();
>        extruder.SetInput(data);
>        extruder.SetVector(0, 0, spacing[2]);
>        extruder.Update();
>        vtkPolyData extruderOutput = extruder.GetOutput();
>
>        vtkPolyDataToImageStencil pol2Stenc = new vtkPolyDataToImageStencil();
>        pol2Stenc.SetTolerance(0);
>        pol2Stenc.SetInput(extruderOutput);
>        pol2Stenc.SetInformationInput(binaryOrgan);
>        pol2Stenc.Update();
>        vtkImageStencilData pol2StencOutput = pol2Stenc.GetOutput();
>
>        // This is where the memory leak is!!!!
>        vtkImageStencil stencil = new vtkImageStencil();
>        stencil.SetInput(binaryOrgan);
>        stencil.ReverseStencilOn();
>        stencil.SetStencil(pol2StencOutput);
>        stencil.Update();
>
>        // We're doing this because of an email to Mark
>        // that says this will fix our memory issues
>        final vtkImageData stencilOutput = stencil.GetOutput();
>        final vtkImageData imageToKeep = new vtkImageData();
>        imageToKeep.DeepCopy(stencilOutput);
>        stencilOutput.Delete();
>
> When I try to call this code from multiple threads (ie, to create the
> stencils for multiple organs), Bad Things happen, as in, the data are
> entirely corrupted.  Is this code thread safe?
>
> Mark
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>



More information about the vtkusers mailing list