// Modified by: Vadim Zeitlin (modifications partly inspired by omnithreads
// package from Olivetti & Oracle Research Laboratory)
// Created: 04/13/98
-// RCS-ID: $Id$
// Copyright: (c) Guilhem Lavaux
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#endif
};
-// defines the interval of priority
+// Obsolete synonyms for wxPRIORITY_XXX for backwards compatibility-only
enum
{
- WXTHREAD_MIN_PRIORITY = 0u,
- WXTHREAD_DEFAULT_PRIORITY = 50u,
- WXTHREAD_MAX_PRIORITY = 100u
+ WXTHREAD_MIN_PRIORITY = wxPRIORITY_MIN,
+ WXTHREAD_DEFAULT_PRIORITY = wxPRIORITY_DEFAULT,
+ WXTHREAD_MAX_PRIORITY = wxPRIORITY_MAX
};
// There are 2 types of mutexes: normal mutexes and recursive ones. The attempt
// the lock on the associated mutex object, before returning.
wxCondError Wait();
+ // std::condition_variable-like variant that evaluates the associated condition
+ template<typename Functor>
+ wxCondError Wait(const Functor& predicate)
+ {
+ while ( !predicate() )
+ {
+ wxCondError e = Wait();
+ if ( e != wxCOND_NO_ERROR )
+ return e;
+ }
+ return wxCOND_NO_ERROR;
+ }
+
// exactly as Wait() except that it may also return if the specified
// timeout elapses even if the condition hasn't been signalled: in this
- // case, the return value is false, otherwise (i.e. in case of a normal
- // return) it is true
+ // case, the return value is wxCOND_TIMEOUT, otherwise (i.e. in case of a
+ // normal return) it is wxCOND_NO_ERROR.
//
// the timeout parameter specifies an interval that needs to be waited for
// in milliseconds
wxThreadError Resume();
// priority
- // Sets the priority to "prio": see WXTHREAD_XXX_PRIORITY constants
+ // Sets the priority to "prio" which must be in 0..100 range (see
+ // also wxPRIORITY_XXX constants).
//
// NB: the priority can only be set before the thread is created
void SetPriority(unsigned int prio);
// of this thread.
virtual void *Entry() = 0;
+ // use this to call the Entry() virtual method
+ void *CallEntry();
// Callbacks which may be overridden by the derived class to perform some
// specific actions when the thread is deleted or killed. By default they