[TOC] # 线程库的常规设计 库提供一个`Thread`的基类,里面有(纯)虚函数`Thread::run()`,我们需要从`Thread`派生一个基类,然后覆写`run()·函数,然后`start()`运行线程。 # 基于std::tr1::bind()和`std::tr1::function()`的设计 ``` class Thread { public: typedef std::tr1::function<void()> TrCallBack; Thread(TrCallBack &tcb); private: void start(); void run(); TrCallBack _tcb; }; Thread::Thread(TrCallBack &tcb):_tcb(tcb) {} void Thread::start() { // do something to call run. } void Thread::run() { _tcb(); } class Foo { public: void func1(); void func2(int a); void func3(string b); }; int main(int argc,char **argv) { Foo foo; Thread t1(std::tr1::bind(&Foo::func1, &foo)); Thread t2(std::tr1::bind(&Foo::func2, &foo,1)); Thread t3(std::tr1::bind(&Foo::func3, &foo,"hey guy")); t1.start(); t2.start(); t3.start(); return 0; } ```