thread.cpp revision ba4014339471126ca90af5a5ec7a1ee10ad6c15b
1#include <pthread.h>
2#include <thread.h>
3
4Thread::Thread()
5{
6    r = NULL;
7}
8
9Thread::Thread(RunnableInterface *r)
10{
11    this->r = r;
12}
13
14Thread::~Thread()
15{
16    Join();
17}
18
19int Thread::Start(void)
20{
21    return pthread_create(&id, NULL, Instance, this);
22}
23
24int Thread::Join(void)
25{
26    return pthread_join(id, NULL);
27}
28
29void *Thread::Instance(void *p)
30{
31    Thread *t = static_cast<Thread *>(p);
32
33    t->Run();
34
35    return NULL;
36}
37
38void Thread::Run(void)
39{
40    if (r)
41        r->Run();
42    else
43        return;
44}
45