Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- я#include <iostream>
- #include <pthread.h>
- #include <vector>
- #include <utility>
- const int ERROR_CREATE_THREAD = -11;
- const int SUCCESS = 0;
- using namespace std;
- void summAndShow(vector <int>& a, vector <int> &b, vector <int> &c)
- {
- int summc = 0;
- for (int i = 0; i < a.size(); i++)
- {
- c.push_back(a[i] * b[i]);
- summc += c[i];
- cout << endl << i << " " << c[i] << "*" << b[i] << "=" << c[i];
- }
- cout << endl << "summ="<<summc<<endl;
- }
- //функция складывает вектора numbersA и numbersB и cохраняет в numbersC
- void* mySort(void* arg)
- {
- vector<int>& numbers = *(vector <int>*)arg;
- for (int i = 0; i < numbers.size(); ++i)
- for (int j = i + 1; j < numbers.size(); ++j)
- if (numbers[i] > numbers[j])swap(numbers[i], numbers[j]);
- return SUCCESS;
- }
- // функция сортирует вектор
- int main()
- {
- int ret;
- vector <int> numbersA1 = { 3,8,2,5,4,6,1,9,7,1 };
- vector <int> numbersB1 = { 0,3,1,2,6,8,2,3,8,9 };
- vector <int> numbersC1;
- numbersC1.reserve(numbersA1.size());
- vector <int> numbersA2 = { 23,18,12,0,41,1006,321,93,74,11 };
- vector <int> numbersB2 = { 0,16,88,21,6,81,23,23,18,90 };
- vector <int> numbersC2;
- numbersC2.reserve(numbersA2.size());
- vector <int> numbersA3 = { 31,1,3,12,41,56,21,91,722,10 };
- vector <int> numbersB3 = { 90,39,18,27,66,85,24,33,82,91 };
- vector <int> numbersC3;
- numbersC3.reserve(numbersA3.size());
- pthread_t sortNumbersA1;
- pthread_t sortNumbersB1;
- pthread_t sortNumbersA2;
- pthread_t sortNumbersB2;
- pthread_t sortNumbersA3;
- pthread_t sortNumbersB3;
- int statusThreadA1;
- int statusThreadB1;
- int statusThreadA2;
- int statusThreadB2;
- int statusThreadA3;
- int statusThreadB3;
- statusThreadA1 = pthread_create(&sortNumbersA1, NULL, mySort, &numbersA1);// создаем поток
- if (statusThreadA1 != 0)//проверка ошибок
- {
- std::cerr << endl << "eror status=" << statusThreadA1 << endl;
- exit(ERROR_CREATE_THREAD);
- }
- statusThreadB1 = pthread_create(&sortNumbersB1, NULL, mySort, &numbersB1);// создаем поток
- if (statusThreadB1 != 0)//проверка ошибок
- {
- std::cerr << endl << "eror status=" << statusThreadB1 << endl;
- exit(ERROR_CREATE_THREAD);
- }
- statusThreadA2 = pthread_create(&sortNumbersA2, NULL, mySort, &numbersA1);// создаем поток
- if (statusThreadA2 != 0)//проверка ошибок
- {
- std::cerr << endl << "eror status=" << statusThreadA2 << endl;
- exit(ERROR_CREATE_THREAD);
- }
- statusThreadB2 = pthread_create(&sortNumbersB2, NULL, mySort, &numbersB2);// создаем поток
- if (statusThreadB2!= 0)//проверка ошибок
- {
- std::cerr << endl << "eror status=" << statusThreadB2 << endl;
- exit(ERROR_CREATE_THREAD);
- }
- statusThreadA3 = pthread_create(&sortNumbersA3, NULL, mySort, &numbersA3);// создаем поток
- if (statusThreadA3 != 0)//проверка ошибок
- {
- std::cerr << endl << "eror status=" << statusThreadA3 << endl;
- exit(ERROR_CREATE_THREAD);
- }
- statusThreadB3 = pthread_create(&sortNumbersB3, NULL, mySort, &numbersB3);// создаем поток
- if (statusThreadB3 != 0)//проверка ошибок
- {
- std::cerr << endl << "eror status=" << statusThreadB3 << endl;
- exit(ERROR_CREATE_THREAD);
- }
- ret = pthread_join(sortNumbersA1, NULL);//ожидаем завершение потокa
- ret = pthread_join(sortNumbersB1, NULL);
- ret = pthread_join(sortNumbersA2, NULL);
- ret = pthread_join(sortNumbersB2, NULL);
- ret = pthread_join(sortNumbersA3, NULL);
- ret = pthread_join(sortNumbersB3, NULL);
- summAndShow(numbersA1, numbersB1, numbersC1);
- summAndShow(numbersA2, numbersB2, numbersC2);
- summAndShow(numbersA3, numbersB3, numbersC3);
- cout << endl;
- system("pause");
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement