t.Join();
t2.Join();
std::cout << "sum1 = " << t.ExitCode() << "; sum2 = " << t2.ExitCode() << std::endl;
// test ConcreteThread
CThreadPtr p = MakeThread( std::bind( sum, 50000 ) );
p->Run();
p->Join();
std::cout << "sum3 = " << p->GetExitCode() << std::endl;
//delete p;
std::auto_ptr< GeneralThread > p2( MakeThread( std::bind( sum, 50001 ) ) );
p->Run(); p->Join();
std::cout <<"sum4 = " << p->GetExitCode() << std::endl;
}
测试代码很简短,使用了标准C++的std::bind把sum函数包装成函数对象,然后在单独的线程中运行。