【发布时间】:2014-01-13 02:09:42
【问题描述】:
从 C++11 中的线程返回值的最有效方法是什么?
vector<thread> t(6);
for(int i = 0; i < 6; i++)
t[i] = thread(do_c);
for(thread& t_now : t)
t_now.join();
for(int i = 0; i < 6; i++)
cout << /*the return of function do_c*/
另外,如果更改会提高性能,请随时推荐除std::thread 之外的其他线程。
【问题讨论】:
-
你不小心说了什么?从线程返回一个值,对吧?
-
?你什么意思?是的
-
是的,但我想要最有效的方式
-
@luka - 如果您要启动 100 个线程,则存在性能问题。仅当您有足够的处理器和/或在易于程序实现方面才有意义时,拥有多个线程才有意义。否则你会在上下文切换中失去很多性能。无论如何,加入线程不会有太多的性能开销,因为调用会被操作系统阻止
-
这里有人不明白io bound和cpu bound的区别