/*========================================================================= Program: Visualization Toolkit Module: vtkCriticalSection.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "vtkSimpleCriticalSection.h" void vtkSimpleCriticalSection::Init() { #ifdef VTK_USE_WIN32_THREADS //this->MutexLock = CreateMutex( nullptr, FALSE, nullptr ); InitializeCriticalSection(&this->CritSec); #endif #ifdef VTK_USE_PTHREADS pthread_mutex_init(&(this->CritSec), nullptr); #endif } // Destruct the vtkMutexVariable vtkSimpleCriticalSection::~vtkSimpleCriticalSection() { #ifdef VTK_USE_WIN32_THREADS //CloseHandle(this->MutexLock); DeleteCriticalSection(&this->CritSec); #endif #ifdef VTK_USE_PTHREADS pthread_mutex_destroy( &this->CritSec); #endif } // Lock the vtkCriticalSection void vtkSimpleCriticalSection::Lock() { #ifdef VTK_USE_WIN32_THREADS //WaitForSingleObject( this->MutexLock, INFINITE ); EnterCriticalSection(&this->CritSec); #endif #ifdef VTK_USE_PTHREADS pthread_mutex_lock( &this->CritSec); #endif } // Unlock the vtkCriticalSection void vtkSimpleCriticalSection::Unlock() { #ifdef VTK_USE_WIN32_THREADS //ReleaseMutex( this->MutexLock ); LeaveCriticalSection(&this->CritSec); #endif #ifdef VTK_USE_PTHREADS pthread_mutex_unlock( &this->CritSec); #endif }