#include "Thread.h" Thread::Thread() { currentState = THREAD_IDLE; }; Thread::~Thread() { }; bool Thread::operator==(const Thread& obj) const { return (pthread_equal(threadID, obj.threadID) != 0); }; void Thread::run() { setThreadState(THREAD_RUNNING); execute(); setThreadState(THREAD_DEAD); }; int Thread::start() { int result = 0; result = pthread_create(&threadID,NULL,&(Thread::threadFunction),this); if (result) { setThreadState(THREAD_DEAD); cout << "-ERROR- CREATE FAILED ThreadID:" << threadID << " Result: " << result << endl; cout.flush(); } else { pthread_detach(threadID); } return result; }; void* Thread::threadFunction(void* pt) { Thread* thrd = reinterpret_cast(pt); thrd->run(); return NULL; }; int Thread::self() const { return (int)threadID; } void Thread::detach(void) const { pthread_detach(threadID); }; int Thread::join(void) { int status = 0; pthread_join(threadID, (void**)&status); return status; }; void Thread::terminate() { pthread_cancel(threadID); }; void Thread::exit() { pthread_exit((void**)0); }; bool Thread::setThreadState(int state) { currentState = state; return true; }; int Thread::getThreadState() { return currentState; };