Difference between revisions of "Documentation/Nightly/Developers/Tutorials/MigrationGuide/ITK4-to-ITK5"

From Slicer Wiki
Jump to: navigation, search
Line 5: Line 5:
  
 
Make also sure to read through the [https://github.com/InsightSoftwareConsortium/ITK/blob/master/Documentation/ITK5MigrationGuide.md ITK 5 migration guide].
 
Make also sure to read through the [https://github.com/InsightSoftwareConsortium/ITK/blob/master/Documentation/ITK5MigrationGuide.md ITK 5 migration guide].
 +
 +
===Upgrading to ITKv5 or keep using ITKv4 GenerateThreadedData===
 +
If the ThreadedGenerateData does not use threadId, change the name of the function to DynamicThreadedGenerateData
 +
Replace:
 +
<pre>
 +
  void ThreadedGenerateData( const OutputRegionType& threadRegion, ThreadIdType threadId )
 +
</pre>
 +
with:
 +
<pre>
 +
  void DynamicThreadedGenerateData( const OutputRegionType& threadRegion )
 +
</pre>
 +
 +
If you want to keep using the ITKv4 thread system (with ThreadedGenerateData), add to the constructor of your ITK class:
 +
<pre>
 +
  this->DynamicMultiThreadingOff();
 +
</pre>
  
 
===itkMultiThreader refactor===
 
===itkMultiThreader refactor===

Revision as of 16:23, 22 March 2019

Home < Documentation < Nightly < Developers < Tutorials < MigrationGuide < ITK4-to-ITK5

Transition from ITK4 to ITK5

This section lists categories of code changes necessary to build Slicer with ITK 5. Each category has a short description, an example error message, a suggested upgrade path, and references to relevant commits.

Referencing this list might be helpful if Slicer extensions requiring updates to be compatible with ITK 5.

Make also sure to read through the ITK 5 migration guide.

Upgrading to ITKv5 or keep using ITKv4 GenerateThreadedData

If the ThreadedGenerateData does not use threadId, change the name of the function to DynamicThreadedGenerateData Replace:

  void ThreadedGenerateData( const OutputRegionType& threadRegion, ThreadIdType threadId )

with:

  void DynamicThreadedGenerateData( const OutputRegionType& threadRegion )

If you want to keep using the ITKv4 thread system (with ThreadedGenerateData), add to the constructor of your ITK class:

  this->DynamicMultiThreadingOff();

itkMultiThreader refactor

Replace lines like:

  #include <itkMultiThreader.h>

  itk::MultiThreader::Pointer ProcessingThreader;

with:

  #include <itkPlatformMultiThreader.h>

  itk::PlatformMultiThreader::Pointer ProcessingThreader;

SimpleFastMutexLock, FastMutexLock and MutexLock are deprecated

Instead use std::mutex available in C++11

Replace:

  #include "itkSimpleFastMutexLock.h"
  #include "itkFastMutexLock.h"
  #include "itkMutexLock.h"

  SimpleFastMutexLock
  FastMutexLock
  MutexLock

with:

  #include <mutex>

  std::mutex