X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=otherlibs%2F_graphics%2Finclude%2FOpenEXR%2FIlmThread.h;fp=otherlibs%2F_graphics%2Finclude%2FOpenEXR%2FIlmThread.h;h=0000000000000000000000000000000000000000;hb=e4c14cdbdf2fe805e79cd96ded236f57e7b89060;hp=5129a8efeb2390fc12cb983c051390c46da4a338;hpb=454138ff8a20f6edb9b65a910101403d8b520643;p=opencv diff --git a/otherlibs/_graphics/include/OpenEXR/IlmThread.h b/otherlibs/_graphics/include/OpenEXR/IlmThread.h deleted file mode 100644 index 5129a8e..0000000 --- a/otherlibs/_graphics/include/OpenEXR/IlmThread.h +++ /dev/null @@ -1,141 +0,0 @@ -/////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2005, Industrial Light & Magic, a division of Lucas -// Digital Ltd. LLC -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Industrial Light & Magic nor the names of -// its contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////// - -#ifndef INCLUDED_ILM_THREAD_H -#define INCLUDED_ILM_THREAD_H - -//----------------------------------------------------------------------------- -// -// class Thread -// -// Class Thread is a portable interface to a system-dependent thread -// primitive. In order to make a thread actually do something useful, -// you must derive a subclass from class Thread and implement the -// run() function. If the operating system supports threading then -// the run() function will be executed int a new thread. -// -// The actual creation of the thread is done by the start() routine -// which then calls the run() function. In general the start() -// routine should be called from the constructor of the derived class. -// -// The base-class thread destructor will join/destroy the thread. -// -// IMPORTANT: Due to the mechanisms that encapsulate the low-level -// threading primitives in a C++ class there is a race condition -// with code resembling the following: -// -// { -// WorkerThread myThread; -// } // myThread goes out of scope, is destroyed -// // and the thread is joined -// -// The race is between the parent thread joining the child thread -// in the destructor of myThread, and the run() function in the -// child thread. If the destructor gets executed first then run() -// will be called with an invalid "this" pointer. -// -// This issue can be fixed by using a Semaphore to keep track of -// whether the run() function has already been called. You can -// include a Semaphore member variable within your derived class -// which you post() on in the run() function, and wait() on in the -// destructor before the thread is joined. Alternatively you could -// do something like this: -// -// Semaphore runStarted; -// -// void WorkerThread::run () -// { -// runStarted.post() -// // do some work -// ... -// } -// -// { -// WorkerThread myThread; -// runStarted.wait (); // ensure that we have started -// // the run function -// } // myThread goes out of scope, is destroyed -// // and the thread is joined -// -//----------------------------------------------------------------------------- - -#include "OpenEXRConfig.h" - -#if defined _WIN32 || defined _WIN64 - #ifdef NOMINMAX - #undef NOMINMAX - #endif - #define NOMINMAX - #include - #include -#elif HAVE_PTHREAD - #include -#endif - -namespace IlmThread { - -// -// Query function to determine if the current platform supports -// threads AND this library was compiled with threading enabled. -// - -bool supportsThreads (); - - -class Thread -{ - public: - - Thread (); - virtual ~Thread (); - - void start (); - virtual void run () = 0; - - private: - - #if defined _WIN32 || defined _WIN64 - HANDLE _thread; - #elif HAVE_PTHREAD - pthread_t _thread; - #endif - - void operator = (const Thread& t); // not implemented - Thread (const Thread& t); // not implemented -}; - - -} // namespace IlmThread - -#endif