File tree Expand file tree Collapse file tree 2 files changed +5
-5
lines changed Expand file tree Collapse file tree 2 files changed +5
-5
lines changed Original file line number Diff line number Diff line change @@ -91,7 +91,7 @@ auto sum(ForwardIt first, ForwardIt last){
9191 std::size_t remainder = distance % num_threads;
9292
9393 // 存储每个线程的结果
94- std::vector<value_type> results { num_threads } ;
94+ std::vector<value_type> results( num_threads) ;
9595
9696 // 存储关联线程的线程对象
9797 std::vector<std::thread> threads;
@@ -120,7 +120,7 @@ auto sum(ForwardIt first, ForwardIt last){
120120}
121121```
122122
123- > [运行](https://godbolt.org/z/MdrP98o13 )测试。
123+ > [运行](https://godbolt.org/z/9qW55aY6j )测试。
124124
125125我们写了这样一个求和函数 `sum`,接受两个迭代器计算它们范围中对象的和。
126126
Original file line number Diff line number Diff line change @@ -697,9 +697,9 @@ auto sum(ForwardIt first, ForwardIt last) {
697697 std::size_t remainder = distance % num_threads;
698698
699699 // 存储每个线程要执行的任务
700- std::vector<std::packaged_task<value_type()>>tasks;
700+ std::vector<std::packaged_task<value_type()>> tasks;
701701 // 和每一个任务进行关联的 future 用于获取返回值
702- std::vector<std::future<value_type>>futures(num_threads);
702+ std::vector<std::future<value_type>> futures(num_threads);
703703
704704 // 存储关联线程的线程对象
705705 std::vector<std::thread> threads;
@@ -733,7 +733,7 @@ auto sum(ForwardIt first, ForwardIt last) {
733733}
734734` ` `
735735
736- > [运行](https://godbolt.org/z/r19MYcv6e )测试。
736+ > [运行](https://godbolt.org/z/79fe1Gvcq )测试。
737737
738738相比于之前,其实不同无非是定义了 ` std::vector<std::packaged_task<value_type()>> tasks` 与 ` std::vector<std::future<value_type>> futures` ,然后在循环中制造任务插入容器,关联 future,再放到线程中执行。最后汇总的时候写一个循环,`futures[i].get ()` 获取任务的返回值加起来即可。
739739
You can’t perform that action at this time.
0 commit comments