从c++ 11开始,语言核心和标准库开始引入了对多线程的原生支持。如下所示:
int doSth(char c)
{
default_random_engine dre(c);
uniform_int_distribution<int> id(10,10000);
for(int i=0;i<10;i++) {
this_thread::sleep_for(chrono::milliseconds(id(dre)));
cout.put(c).flush();
}
return c;
}
int func1() {
return doSth(',');
}
int func2() {
return doSth('+');
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << "func1() background, func2() foreground." << endl;
future<int> result1(async(func1));
int result2 = func2();
cout << "result2先返回=" << result2 << endl;
int result = result1.get() + result2;
cout << "异步测试结束." << endl;
}
输出如下:func1() background, func2() foreground.
++,+,,+,+,+,+,,+,+,+result2先返回=43
异步测试结束.
作为入门课,c++标准库第二版第18章还是不错的。
虽然如此,大量的遗留、甚至是当前正在开发的系统使用的仍然是开源的线程库比如pthread或者openMP。作为最老牌的线程库pthread,无论如何都是应该学习和掌握的,参见pthread库的关键应用。
原文链接: https://www.cnblogs.com/lightdb/p/6351322.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/248464
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!