#include class Mutex { public: Mutex(); ~Mutex(); void lock(); void unlock(); bool isLocked(); private: pthread_mutex_t mutex; bool locked; }; class SimpleThread { public: SimpleThread(void *data = NULL); virtual ~SimpleThread(); void start(); void stop(); bool isRunning(); protected: virtual void run() = 0; pthread_t thread_id; void *userData; static void *boot(void *context); };