Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <thread>
- #include <vector>
- #include <mutex>
- #include <chrono>
- #include <algorithm>
- #include <ctime>
- #include <random>
- // Сегодня день веселой многопоточности
- std::mutex mut;
- void worker(int* vct, int q, int pos, short thr_num)
- {
- for (int i = pos; i < pos + q; ++i)
- {
- if (vct[i] % 2 != 0)
- vct[i] = 0;
- }
- }
- int main(int argc, char* argv[])
- {
- // std::vector<int> resint
- int* result = new int[100000000];
- srand(time(0));
- std::generate(result, result + 100000000, std::rand);
- int quart = 100000000 / 4;
- auto beg = std::chrono::steady_clock::now();
- std::thread work_thread_0(worker, std::ref(result), quart, quart * 0, 0);
- std::thread work_thread_1(worker, std::ref(result), quart, quart * 1, 1);
- std::thread work_thread_2(worker, std::ref(result), quart, quart * 2, 2);
- std::thread work_thread_3(worker, std::ref(result), quart, quart * 3, 3);
- work_thread_0.join();
- work_thread_1.join();
- work_thread_2.join();
- work_thread_3.join();
- auto end = std::chrono::steady_clock::now();
- delete[] result;
- std::cout << "Elapsed time in seconds: " << std::chrono::duration_cast<std::chrono::milliseconds> (end - beg).count() << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement