C++编程 –安全并发访问容器元素(2)


  // Use the for_each algorithm to compute the results serially.
  elapsed = time_call([&]
  {
      for_each (a.begin(), a.end(), [&](int n) {
        results1.push_back(make_tuple(n, fibonacci(n)));
      });
  }); 
  wcout << L"serial time: " << elapsed << L" ms" << endl;


  // Use the parallel_for_each algorithm to perform the same task.
  elapsed = time_call([&]
  {
      parallel_for_each (a.begin(), a.end(), [&](int n) {
        results2.push_back(make_tuple(n, fibonacci(n)));
      });


      // Because parallel_for_each acts concurrently, the results do not
      // have a pre-determined order. Sort the concurrent_vector object
      // so that the results match the serial version.
      sort(results2.begin(), results2.end());
  }); 
  wcout << L"parallel time: " << elapsed << L" ms" << endl << endl;


  // Print the results.
  for_each (results2.begin(), results2.end(), [](tuple<int,int>& pair) {
      wcout << L"fib(" << get<0>(pair) << L"): " << get<1>(pair) << endl;
  });
}

命名空间Concurrency首字母大写,一般命名空间全是小写。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/b059785ceebdd894e45a89f0fa48c5da.html