Advertisement
Guest User

array

a guest
Oct 15th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <iostream>
  2. #include <thread>
  3. #include <vector>
  4. #include <mutex>
  5. #include <chrono>
  6. #include <algorithm>
  7. #include <ctime>
  8. #include <random>
  9.  
  10. // Сегодня день веселой многопоточности
  11.  
  12. std::mutex mut;
  13.  
  14. void worker(int* vct, int q, int pos, short thr_num)
  15. {
  16.  
  17. for (int i = pos; i < pos + q; ++i)
  18. {
  19. if (vct[i] % 2 != 0)
  20. vct[i] = 0;
  21. }
  22. }
  23.  
  24. int main(int argc, char* argv[])
  25. {
  26. // std::vector<int> resint
  27. int* result = new int[100000000];
  28. srand(time(0));
  29. std::generate(result, result + 100000000, std::rand);
  30. int quart = 100000000 / 4;
  31. auto beg = std::chrono::steady_clock::now();
  32. std::thread work_thread_0(worker, std::ref(result), quart, quart * 0, 0);
  33. std::thread work_thread_1(worker, std::ref(result), quart, quart * 1, 1);
  34. std::thread work_thread_2(worker, std::ref(result), quart, quart * 2, 2);
  35. std::thread work_thread_3(worker, std::ref(result), quart, quart * 3, 3);
  36. work_thread_0.join();
  37. work_thread_1.join();
  38. work_thread_2.join();
  39. work_thread_3.join();
  40. auto end = std::chrono::steady_clock::now();
  41. delete[] result;
  42. std::cout << "Elapsed time in seconds: " << std::chrono::duration_cast<std::chrono::milliseconds> (end - beg).count() << '\n';
  43. return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement