#include <iostream>
using namespace std;
#include <pthread.h>
#include <unistd.h>
//实现一个线程基类,使得只要继承该基类的子类实现run函数,通过多态则可轻易实现线程创建。
//2012-5-11
class ThreadBaseClass
{
private:
pthread_t t;
public:
virtual void run()=0;
static void *run(void *ppp)
{
ThreadBaseClass* p = (ThreadBaseClass*)ppp;
p->run();
}
void start()
{
pthread_create(&t,0,run,this);
}
};
class SonThread : public ThreadBaseClass
{
void run()
{
for(int i=0; i<7; i++)
{
cout << i << " ";
cout.flush();
sleep(1);
}
delete this;//如果是通过多态的形式new的方式,则这一招释放内存的方法非常有效
}
};
class SonThread2 : public ThreadBaseClass
{
void run()
{
for(char i = 'A'; i<='G'; i++)
{
cout << i << " ";
cout.flush();
sleep(1);
}
delete this;//但是,注意,如果不是以new的形式实现多态,则行代码会带来灭顶之灾
}
};
int main()
{
ThreadBaseClass* p = new SonThread();
p->start();
ThreadBaseClass* p2 = new SonThread2();
p2->start();
while(1);
return 0;
}
using namespace std;
#include <pthread.h>
#include <unistd.h>
//实现一个线程基类,使得只要继承该基类的子类实现run函数,通过多态则可轻易实现线程创建。
//2012-5-11
class ThreadBaseClass
{
private:
pthread_t t;
public:
virtual void run()=0;
static void *run(void *ppp)
{
ThreadBaseClass* p = (ThreadBaseClass*)ppp;
p->run();
}
void start()
{
pthread_create(&t,0,run,this);
}
};
class SonThread : public ThreadBaseClass
{
void run()
{
for(int i=0; i<7; i++)
{
cout << i << " ";
cout.flush();
sleep(1);
}
delete this;//如果是通过多态的形式new的方式,则这一招释放内存的方法非常有效
}
};
class SonThread2 : public ThreadBaseClass
{
void run()
{
for(char i = 'A'; i<='G'; i++)
{
cout << i << " ";
cout.flush();
sleep(1);
}
delete this;//但是,注意,如果不是以new的形式实现多态,则行代码会带来灭顶之灾
}
};
int main()
{
ThreadBaseClass* p = new SonThread();
p->start();
ThreadBaseClass* p2 = new SonThread2();
p2->start();
while(1);
return 0;
}