summaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MIUtilThreadBaseStd.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MIUtilThreadBaseStd.h')
-rw-r--r--tools/lldb-mi/MIUtilThreadBaseStd.h251
1 files changed, 132 insertions, 119 deletions
diff --git a/tools/lldb-mi/MIUtilThreadBaseStd.h b/tools/lldb-mi/MIUtilThreadBaseStd.h
index 277e14c0fc88..e3cf5083011d 100644
--- a/tools/lldb-mi/MIUtilThreadBaseStd.h
+++ b/tools/lldb-mi/MIUtilThreadBaseStd.h
@@ -8,18 +8,18 @@
//===----------------------------------------------------------------------===//
//++
-// File: MIUtilThreadBaseStd.h
+// File: MIUtilThreadBaseStd.h
//
-// Overview: CMIUtilThread interface.
-// CMIUtilThreadActiveObjBase interface.
-// CMIUtilThreadMutex interface.
-// CMIUtilThreadLock interface.
+// Overview: CMIUtilThread interface.
+// CMIUtilThreadActiveObjBase interface.
+// CMIUtilThreadMutex interface.
+// CMIUtilThreadLock interface.
//
-// Environment: Compilers: Visual C++ 12.
-// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
-// Libraries: See MIReadmetxt.
+// Environment: Compilers: Visual C++ 12.
+// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+// Libraries: See MIReadmetxt.
//
-// Copyright: None.
+// Copyright: None.
//--
#pragma once
@@ -36,135 +36,148 @@
#include "MIUtilString.h"
//++ ============================================================================
-// Details: MI common code utility class. Handle thread mutual exclusion.
-// Embed Mutexes in your Active Object and then use them through Locks.
-// Gotchas: None.
-// Authors: Aidan Dodds 10/03/2014.
-// Changes: None.
+// Details: MI common code utility class. Handle thread mutual exclusion.
+// Embed Mutexes in your Active Object and then use them through Locks.
+// Gotchas: None.
+// Authors: Aidan Dodds 10/03/2014.
+// Changes: None.
//--
class CMIUtilThreadMutex
{
- // Methods:
-public:
- /* ctor */ CMIUtilThreadMutex( void ) { };
- //
- void Lock( void ); // Wait until mutex can be obtained
- void Unlock( void ); // Release the mutex
- bool TryLock( void ); // Gain the lock if available
-
-// Overrideable:
-public:
- // From CMICmnBase
- /* dtor */ virtual ~CMIUtilThreadMutex( void ) { };
-
-// Attributes:
-private:
- std::recursive_mutex m_mutex;
+ // Methods:
+ public:
+ /* ctor */ CMIUtilThreadMutex(void){};
+ //
+ void
+ Lock(void); // Wait until mutex can be obtained
+ void
+ Unlock(void); // Release the mutex
+ bool
+ TryLock(void); // Gain the lock if available
+
+ // Overrideable:
+ public:
+ // From CMICmnBase
+ /* dtor */ virtual ~CMIUtilThreadMutex(void){};
+
+ // Attributes:
+ private:
+ std::recursive_mutex m_mutex;
};
//++ ============================================================================
-// Details: MI common code utility class. Thread object.
-// Gotchas: None.
-// Authors: Aidan Dodds 10/03/2014.
-// Changes: None.
+// Details: MI common code utility class. Thread object.
+// Gotchas: None.
+// Authors: Aidan Dodds 10/03/2014.
+// Changes: None.
//--
class CMIUtilThread
{
-// Typedef:
-public:
- typedef MIuint (* FnThreadProc) (void * vpThisClass);
-
-// Methods:
-public:
- /* ctor */ CMIUtilThread( void );
- //
- bool Start( FnThreadProc vpFn, void * vpArg ); // Start execution of this thread
- bool Join( void ); // Wait for this thread to stop
- bool IsActive( void ); // Returns true if this thread is running
-
-// Overrideable:
-public:
- /* dtor */ virtual ~CMIUtilThread( void );
-
-// Methods:
-private:
- CMIUtilThreadMutex m_mutex;
- std::thread * m_pThread;
+ // Typedef:
+ public:
+ typedef MIuint (*FnThreadProc)(void *vpThisClass);
+
+ // Methods:
+ public:
+ /* ctor */ CMIUtilThread(void);
+ //
+ bool
+ Start(FnThreadProc vpFn, void *vpArg); // Start execution of this thread
+ bool
+ Join(void); // Wait for this thread to stop
+ bool
+ IsActive(void); // Returns true if this thread is running
+
+ // Overrideable:
+ public:
+ /* dtor */ virtual ~CMIUtilThread(void);
+
+ // Methods:
+ private:
+ CMIUtilThreadMutex m_mutex;
+ std::thread *m_pThread;
};
//++ ============================================================================
-// Details: MI common code utility class. Base class for a worker thread active
-// object. Runs an 'captive thread'.
-// Gotchas: None.
-// Authors: Aidan Dodds 10/03/2014..
-// Changes: None.
+// Details: MI common code utility class. Base class for a worker thread active
+// object. Runs an 'captive thread'.
+// Gotchas: None.
+// Authors: Aidan Dodds 10/03/2014..
+// Changes: None.
//--
class CMIUtilThreadActiveObjBase
{
-// Methods:
-public:
- /* ctor */ CMIUtilThreadActiveObjBase( void );
- //
- bool Acquire( void ); // Obtain a reference to this object
- bool Release( void ); // Release a reference to this object
- bool ThreadIsActive( void ); // Return true if this object is running
- bool ThreadJoin( void ); // Wait for this thread to stop running
- bool ThreadKill( void ); // Force this thread to stop, regardless of references
- bool ThreadExecute( void ); // Start this objects execution in another thread
- void ThreadManage( void );
-
-// Overrideable:
-public:
- /* dtor */ virtual ~CMIUtilThreadActiveObjBase( void );
- //
- // Each thread object must supple a unique name that can be used to locate it
- virtual const CMIUtilString & ThreadGetName( void ) const = 0;
-
-// Statics:
-protected:
- static MIuint ThreadEntry( void * vpThisClass ); // Thread entry point
-
-// Overrideable:
-protected:
- virtual bool ThreadRun( bool &vrIsAlive ) = 0; // Call the main worker method
- virtual bool ThreadFinish( void ) = 0; // Finish of what you were doing
-
-// Attributes:
-protected:
- volatile MIuint m_references; // Stores the current lifetime state of this thread, 0 = running, > 0 = shutting down
- volatile bool m_bHasBeenKilled; // Set to true when this thread has been killed
- CMIUtilThread m_thread; // The execution thread
- CMIUtilThreadMutex m_mutex; // This mutex allows us to safely communicate with this thread object across the interface from multiple threads
+ // Methods:
+ public:
+ /* ctor */ CMIUtilThreadActiveObjBase(void);
+ //
+ bool
+ Acquire(void); // Obtain a reference to this object
+ bool
+ Release(void); // Release a reference to this object
+ bool
+ ThreadIsActive(void); // Return true if this object is running
+ bool
+ ThreadJoin(void); // Wait for this thread to stop running
+ bool
+ ThreadKill(void); // Force this thread to stop, regardless of references
+ bool
+ ThreadExecute(void); // Start this objects execution in another thread
+ void ThreadManage(void);
+
+ // Overrideable:
+ public:
+ /* dtor */ virtual ~CMIUtilThreadActiveObjBase(void);
+ //
+ // Each thread object must supple a unique name that can be used to locate it
+ virtual const CMIUtilString &ThreadGetName(void) const = 0;
+
+ // Statics:
+ protected:
+ static MIuint
+ ThreadEntry(void *vpThisClass); // Thread entry point
+
+ // Overrideable:
+ protected:
+ virtual bool
+ ThreadRun(bool &vrIsAlive) = 0; // Call the main worker method
+ virtual bool
+ ThreadFinish(void) = 0; // Finish of what you were doing
+
+ // Attributes:
+ protected:
+ volatile MIuint m_references; // Stores the current lifetime state of this thread, 0 = running, > 0 = shutting down
+ volatile bool m_bHasBeenKilled; // Set to true when this thread has been killed
+ CMIUtilThread m_thread; // The execution thread
+ CMIUtilThreadMutex
+ m_mutex; // This mutex allows us to safely communicate with this thread object across the interface from multiple threads
};
//++ ============================================================================
-// Details: MI common code utility class. Handle thread resource locking.
-// Put Locks inside all the methods of your Active Object that access
-// data shared with the captive thread.
-// Gotchas: None.
-// Authors: Aidan Dodds 10/03/2014.
-// Changes: None.
+// Details: MI common code utility class. Handle thread resource locking.
+// Put Locks inside all the methods of your Active Object that access
+// data shared with the captive thread.
+// Gotchas: None.
+// Authors: Aidan Dodds 10/03/2014.
+// Changes: None.
//--
class CMIUtilThreadLock
{
-// Methods:
-public:
- /* ctor */
- CMIUtilThreadLock( CMIUtilThreadMutex & vMutex )
- : m_rMutex( vMutex )
- {
- m_rMutex.Lock();
- }
-
-// Overrideable:
-public:
- /* dtor */
- virtual ~CMIUtilThreadLock( void )
- {
- m_rMutex.Unlock();
- }
-
-// Attributes:
-private:
- CMIUtilThreadMutex & m_rMutex;
+ // Methods:
+ public:
+ /* ctor */
+ CMIUtilThreadLock(CMIUtilThreadMutex &vMutex)
+ : m_rMutex(vMutex)
+ {
+ m_rMutex.Lock();
+ }
+
+ // Overrideable:
+ public:
+ /* dtor */
+ virtual ~CMIUtilThreadLock(void) { m_rMutex.Unlock(); }
+
+ // Attributes:
+ private:
+ CMIUtilThreadMutex &m_rMutex;
};