Никак не работает. Пинговать можно только белые айпишки, пинг на локалку не имеет смысла так как серые айпи не маршрутизируются в Интернете.
#include <iostream>
#include <vector>
#include <algorithm>
#include <thread>
#include <atomic>
template <typename RAIter>
int parallel_sum(RAIter begin, RAIter end)
{
std::atomic<int> result;
result = 0;
int length = end - begin;
if(length < 1000)
return std::accumulate(begin, end, 0);
std::vector<std::thread> threads;
unsigned num_of_threads = std::thread::hardware_concurrency();
threads.reserve(num_of_threads);
int values_per_thread = length / num_of_threads;
for(RAIter i = begin; i < end; i += values_per_thread) {
RAIter j = i + values_per_thread;
if(j > end) {
j = end;
}
threads.push_back(std::thread([&result](RAIter begin, RAIter end){
result += std::accumulate(begin, end, 0);
}, i, j));
}
for(auto &thread : threads)
thread.join();
return result;
}
int main()
{
std::vector<int> v(12002, 1);
int sum = parallel_sum(v.begin(), v.end());
std::cout << "The sum is " << sum << '\n';
}