Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <tuple>
- #include <string>
- #include <vector>
- #include <thread>
- using namespace std;
- int maxEl[4];
- void max(vector<int>tab, int start, int end, int index)
- {
- maxEl[index] = tab[start];
- for (int i = start + 1; i < end; i++)
- {
- if (maxEl[index] < tab[i])
- {
- maxEl[index] = tab[i];
- }
- }
- }
- int main()
- {
- vector<int> tab;
- for (int i = 0; i < 55; i++) {
- tab.push_back(rand() % 12344); //jakies randomowe wartosci
- }
- int rest = tab.size() % 4; //resztka jak dzielenie nierowne
- int part = (tab.size() - rest) / 4;//ile przypada na jeden watek
- vector<thread> threads;
- //maxEl trzyma aktualnie najwiekszy element dla danego watku (trzymam sobie od niechcenia globanie ale niewazne xd)
- maxEl[0] = 0;
- maxEl[1] = 0;
- maxEl[2] = 0;
- maxEl[3] = 0;
- threads.push_back(thread(max, tab, 0, part, 0));
- threads.push_back(thread(max, tab, part, part * 2, 1));
- threads.push_back(thread(max, tab, 2 * part, part * 3, 2));
- threads.push_back(thread(max, tab, 3 * part, part * 4 + rest, 3));
- for (int i = 0; i < 4; i++)
- {
- threads[i].join();
- }
- int tabMaxValue = maxEl[0];
- for (int i = 1; i < 4; i++)
- {
- if (tabMaxValue < maxEl[i])
- tabMaxValue = maxEl[i];
- }
- cout << tabMaxValue;
- cout << endl;
- for (int i = 0; i < tab.size(); i++) {
- cout << tab.at(i)<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement