标准C++与线程 (二)

2014-11-24 12:55:07 · 作者: · 浏览: 4
ead t( std::bind( sum, 10000 ) ), t2( std::bind( sum, 20000 ) );
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函数包装成函数对象,然后在单独的线程中运行。

一般而言,使用C++封装系统API以方便使用,通常难度不大,代码也不会太长。这是一个典型的例子。