Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. я#include <iostream>
  2. #include <pthread.h>
  3. #include <vector>
  4. #include <utility>
  5.  
  6. const int ERROR_CREATE_THREAD = -11;
  7. const int SUCCESS = 0;
  8.  
  9. using namespace std;
  10. void summAndShow(vector <int>& a, vector <int> &b, vector <int> &c)
  11. {
  12. int summc = 0;
  13. for (int i = 0; i < a.size(); i++)
  14. {
  15. c.push_back(a[i] * b[i]);
  16. summc += c[i];
  17. cout << endl << i << " " << c[i] << "*" << b[i] << "=" << c[i];
  18. }
  19. cout << endl << "summ="<<summc<<endl;
  20.  
  21. }
  22. //функция складывает вектора numbersA и numbersB и cохраняет в numbersC
  23. void* mySort(void* arg)
  24. {
  25. vector<int>& numbers = *(vector <int>*)arg;
  26.  
  27.  
  28. for (int i = 0; i < numbers.size(); ++i)
  29. for (int j = i + 1; j < numbers.size(); ++j)
  30. if (numbers[i] > numbers[j])swap(numbers[i], numbers[j]);
  31.  
  32. return SUCCESS;
  33. }
  34. // функция сортирует вектор
  35.  
  36. int main()
  37. {
  38. int ret;
  39.  
  40. vector <int> numbersA1 = { 3,8,2,5,4,6,1,9,7,1 };
  41. vector <int> numbersB1 = { 0,3,1,2,6,8,2,3,8,9 };
  42. vector <int> numbersC1;
  43. numbersC1.reserve(numbersA1.size());
  44.  
  45. vector <int> numbersA2 = { 23,18,12,0,41,1006,321,93,74,11 };
  46. vector <int> numbersB2 = { 0,16,88,21,6,81,23,23,18,90 };
  47. vector <int> numbersC2;
  48. numbersC2.reserve(numbersA2.size());
  49.  
  50. vector <int> numbersA3 = { 31,1,3,12,41,56,21,91,722,10 };
  51. vector <int> numbersB3 = { 90,39,18,27,66,85,24,33,82,91 };
  52. vector <int> numbersC3;
  53. numbersC3.reserve(numbersA3.size());
  54.  
  55.  
  56. pthread_t sortNumbersA1;
  57. pthread_t sortNumbersB1;
  58. pthread_t sortNumbersA2;
  59. pthread_t sortNumbersB2;
  60. pthread_t sortNumbersA3;
  61. pthread_t sortNumbersB3;
  62.  
  63. int statusThreadA1;
  64. int statusThreadB1;
  65. int statusThreadA2;
  66. int statusThreadB2;
  67. int statusThreadA3;
  68. int statusThreadB3;
  69.  
  70. statusThreadA1 = pthread_create(&sortNumbersA1, NULL, mySort, &numbersA1);// создаем поток
  71. if (statusThreadA1 != 0)//проверка ошибок
  72. {
  73. std::cerr << endl << "eror status=" << statusThreadA1 << endl;
  74. exit(ERROR_CREATE_THREAD);
  75. }
  76.  
  77. statusThreadB1 = pthread_create(&sortNumbersB1, NULL, mySort, &numbersB1);// создаем поток
  78. if (statusThreadB1 != 0)//проверка ошибок
  79. {
  80. std::cerr << endl << "eror status=" << statusThreadB1 << endl;
  81. exit(ERROR_CREATE_THREAD);
  82. }
  83.  
  84. statusThreadA2 = pthread_create(&sortNumbersA2, NULL, mySort, &numbersA1);// создаем поток
  85. if (statusThreadA2 != 0)//проверка ошибок
  86. {
  87. std::cerr << endl << "eror status=" << statusThreadA2 << endl;
  88. exit(ERROR_CREATE_THREAD);
  89. }
  90.  
  91. statusThreadB2 = pthread_create(&sortNumbersB2, NULL, mySort, &numbersB2);// создаем поток
  92. if (statusThreadB2!= 0)//проверка ошибок
  93. {
  94. std::cerr << endl << "eror status=" << statusThreadB2 << endl;
  95. exit(ERROR_CREATE_THREAD);
  96. }
  97.  
  98. statusThreadA3 = pthread_create(&sortNumbersA3, NULL, mySort, &numbersA3);// создаем поток
  99. if (statusThreadA3 != 0)//проверка ошибок
  100. {
  101. std::cerr << endl << "eror status=" << statusThreadA3 << endl;
  102. exit(ERROR_CREATE_THREAD);
  103. }
  104.  
  105. statusThreadB3 = pthread_create(&sortNumbersB3, NULL, mySort, &numbersB3);// создаем поток
  106. if (statusThreadB3 != 0)//проверка ошибок
  107. {
  108. std::cerr << endl << "eror status=" << statusThreadB3 << endl;
  109. exit(ERROR_CREATE_THREAD);
  110. }
  111.  
  112. ret = pthread_join(sortNumbersA1, NULL);//ожидаем завершение потокa
  113. ret = pthread_join(sortNumbersB1, NULL);
  114. ret = pthread_join(sortNumbersA2, NULL);
  115. ret = pthread_join(sortNumbersB2, NULL);
  116. ret = pthread_join(sortNumbersA3, NULL);
  117. ret = pthread_join(sortNumbersB3, NULL);
  118.  
  119. summAndShow(numbersA1, numbersB1, numbersC1);
  120. summAndShow(numbersA2, numbersB2, numbersC2);
  121. summAndShow(numbersA3, numbersB3, numbersC3);
  122.  
  123. cout << endl;
  124. system("pause");
  125. return(0);
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement