[vtkusers] Thread-safety of New and Delete

eewing eewing at cs.uoregon.edu
Wed Jan 13 17:39:50 EST 2016


Hi David,

Thanks for the quick response. That actually answers my issue. I'm 
working on threaded I/O as part of a large pipeline, described by your 
first example. The pipeline is executed in parts by threads, but on a 
filter-by-filter basis, with no way to lock data to a specific thread.

What would your recommendation be to mitigate the issue? I've seen a 
suggestion to create a "I'm accessing VTK" mutex for whenever you are 
accessing VTK, but I'd like to avoid that if possible.

-Elliott


On 2016-01-13 14:20, David Gobbi wrote:
> Hi Elliott,
> 
> Can you describe your issue in more detail?  The VTK New and Delete
> calls should be thread safe. The two caveats for VTK and threads are:
> 
> 1) All classes that do rendering should be in the same thread (all
> mappers, actors, renderers, etc), and there shouldn't be multiple
> threads hitting the same rendering context.
> 
> 2) Movement of data between threads must be locked or otherwise done
> in a thread-safe manner.
> 
> You would not, for example, create a single pipeline that is accessed
> from multiple threads.  Each thread would have its own pipeline
> segment, with locks to synchronize a copy (or move) of data from the
> output of one segment to the input of another segment.
> 
>  - David
> 
> On Wed, Jan 13, 2016 at 2:27 PM, eewing <eewing at cs.uoregon.edu> wrote:
> 
>> Hello,
>> 
>> I'm running into some issues with VTK in a threaded environment,
>> and it seems that the source of the problem is in VTK's New and
>> Delete calls. So, are the New and Delete calls thread-safe? If not,
>> is there a recommended alternative that I can use inside my threads?
>> 
>> Best,
>> -Elliott Ewing
>> University of Oregon



More information about the vtkusers mailing list