线程基类的实现(一)
来源:互联网 发布:帝国cms 文件权限 编辑:程序博客网 时间:2024/06/06 04:27
#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;
}
- 线程基类的实现(一)
- 线程的实现一
- j2me多线程(一) 线程的实现
- java 多线程 (一)线程的实现
- 深入Java线程管理(一):线程的实现方式
- QT 线程池 + TCP 小试(一)线程池的简单实现
- Java线程(一):传统线程的实现、互斥与通信
- QT 线程池 + TCP 小试(一)线程池的简单实现
- QT 线程池 + TCP 小试(一)线程池的简单实现
- QT 线程池 + TCP 小试(一)线程池的简单实现
- 关于线程(一)线程的基础
- 线程(一)-线程的创建
- 线程池实现代码分析(一)
- Python中实现线程池(一)
- 线程(一)实现方式和生命周期
- Java的线程(一)
- 线程的学习(一)
- QT线程(一):线程类
- 悲剧膜拜一句话刷新缓存
- Linux Apache无法解析PHP综合因素
- 文件(6)XCB前奏
- 电脑通过vnc控制android 手机
- winform 分页控件,源码下载
- 线程基类的实现(一)
- MC9S12G128 PWM
- 盛大云搭建lnmp环境范例
- wp7 图片的读取处理
- starting spamd:bind:address already in use at /usr/bin/spamd line 177 [failed]。
- 资料
- UIView你知道多少
- FileReader小结
- Linux下Apache中PHP无法解析终结办法