File tree 2 files changed +5
-5
lines changed
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){
91
91
std::size_t remainder = distance % num_threads;
92
92
93
93
// 存储每个线程的结果
94
- std::vector<value_type> results { num_threads } ;
94
+ std::vector<value_type> results( num_threads) ;
95
95
96
96
// 存储关联线程的线程对象
97
97
std::vector<std::thread> threads;
@@ -120,7 +120,7 @@ auto sum(ForwardIt first, ForwardIt last){
120
120
}
121
121
```
122
122
123
- > [运行](https://godbolt.org/z/MdrP98o13 )测试。
123
+ > [运行](https://godbolt.org/z/9qW55aY6j )测试。
124
124
125
125
我们写了这样一个求和函数 `sum`,接受两个迭代器计算它们范围中对象的和。
126
126
Original file line number Diff line number Diff line change @@ -697,9 +697,9 @@ auto sum(ForwardIt first, ForwardIt last) {
697
697
std::size_t remainder = distance % num_threads;
698
698
699
699
// 存储每个线程要执行的任务
700
- std::vector<std::packaged_task<value_type()>>tasks;
700
+ std::vector<std::packaged_task<value_type()>> tasks;
701
701
// 和每一个任务进行关联的 future 用于获取返回值
702
- std::vector<std::future<value_type>>futures(num_threads);
702
+ std::vector<std::future<value_type>> futures(num_threads);
703
703
704
704
// 存储关联线程的线程对象
705
705
std::vector<std::thread> threads;
@@ -733,7 +733,7 @@ auto sum(ForwardIt first, ForwardIt last) {
733
733
}
734
734
` ` `
735
735
736
- > [运行](https://godbolt.org/z/r19MYcv6e )测试。
736
+ > [运行](https://godbolt.org/z/79fe1Gvcq )测试。
737
737
738
738
相比于之前,其实不同无非是定义了 ` std::vector<std::packaged_task<value_type()>> tasks` 与 ` std::vector<std::future<value_type>> futures` ,然后在循环中制造任务插入容器,关联 future,再放到线程中执行。最后汇总的时候写一个循环,`futures[i].get ()` 获取任务的返回值加起来即可。
739
739
You can’t perform that action at this time.
0 commit comments