1 #include "../../include/pthreadwrapper/thread.h"
\r
3 #include <sys/timeb.h>
\r
20 Thread::Thread(Runnable *runnable)
\r
24 m_runnable=runnable;
\r
28 m_runnable->m_thread=this;
\r
43 void Thread::Cancel()
\r
51 void *Thread::EntryPoint(void *pthis)
\r
55 ((Thread *)pthis)->m_runnable->Run();
\r
56 ((Thread *)pthis)->m_running=false;
\r
57 ((Thread *)pthis)->m_cancelled=false;
\r
59 ((Thread *)pthis)->m_threadnum=0;
\r
67 pthread_join(m_thread,NULL);
\r
71 void Thread::Sleep(const long ms)
\r
80 pthread_mutex_init(&m,NULL);
\r
81 pthread_cond_init(&c,NULL);
\r
85 t.tv_sec=tb.time+(ms/1000);
\r
86 t.tv_nsec=((1000000L)*(long)tb.millitm)+((1000000L)*(ms%1000));
\r
88 pthread_mutex_lock(&m);
\r
89 pthread_cond_timedwait(&c,&m,&t);
\r
90 pthread_mutex_unlock(&m);
\r
94 void Thread::Start()
\r
97 m_threadnum=pthread_create(&m_thread,NULL,Thread::EntryPoint,this);
\r