最近对c++有些兴趣,主要是想自己写个数据库来玩玩。没想到用c++写东西还真的是一个字:难!(个人感觉,相较于java)
听说boost库很不错,最主要的是,我看中了他的可移植性,就下下来试验下。嘿嘿,是个不错的东东,就是对用惯java的我来说,貌似不是很友好。我怒了,花一上午时间封装了它的线程库,至于效率啊,性能什么的,我就先不管了。可以继承该类重写run方法来创建一个新的线程类!
头文件:
#pragma once
#ifndef THREAD_H_MYDB
#define THREAD_H_MYDB
#include <boost/thread.hpp>
#include <boost/bind.hpp>
namespace mydb{
class Thread
{
private:
typedef void (Thread:: *FunPtr)(void);
boost::thread *thrd;
public:
Thread();
void init();
virtual ~Thread(void);
virtual void run();
void start();
void join();
boost::thread* getBoostThreadPtr();
};
}
#endif
实现文件:
#include "Thread.h"
#include "iostream"
mydb::Thread::~Thread(void)
{
}
mydb::Thread::Thread(void ){
//init();
boost::function0<void> f = boost::bind(&Thread::run,this);
thrd=new boost::thread(f);
}
void mydb::Thread::run(){
std::cout<<"this is base thread!!"<<std::endl;
}
void mydb::Thread::start(){
}
void mydb::Thread::init(){
}
void mydb::Thread::join(){
//todo 当前线程将会等待该线程完成再结束
thrd->join();
}
boost::thread* mydb::Thread::getBoostThreadPtr(){
return thrd;
}
在写这些代码的时候,我在csdn论坛发过些求助贴,很高兴,有人很快回答了我的问题,竟然还有人一眼看出我是用java的。。哎。
。聊当给自己个玩具。