fork(2) download
  1. #include <thread>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. void sort_proc(int * a, int i, int size){
  6. for (int j = size - 1; j > i; j--)
  7. {
  8. // Если соседние элементы расположены
  9. // в неправильном порядке, то меняем
  10. // их местами
  11. if (a[j] < a[j - 1])
  12. {
  13. swap (a[j], a[j - 1]);
  14. }
  15. }
  16. }
  17.  
  18. int main()
  19. {
  20. // Считываем размер массива,
  21. // который необходимо отсортировать
  22. //int size;
  23. //cin >> size;
  24.  
  25. // Динамически выделяем память под
  26. // хранение массива размера size
  27. //int *a = new int[size];
  28.  
  29. // Считываем массив
  30. //for (int i = 0; i < size; i++)
  31. //{
  32. // cin >> a[i];
  33. //}
  34.  
  35. int a[] = {-3, 9, 2, -6, 7, 28, 15};
  36. int size = sizeof(a) / sizeof(a[0]);
  37. thread ** pool = new thread* [size];
  38. // Внешний цикл алгоритма совершает
  39. // ровно size итераций
  40. for (int i = 0; i < size; i++)
  41. {
  42. // Массив просматривается с конца до
  43. // позиции i и "легкие элементы всплывают"
  44. /*for (int j = size - 1; j > i; j--)
  45.   {
  46.   // Если соседние элементы расположены
  47.   // в неправильном порядке, то меняем
  48.   // их местами
  49.   if (a[j] < a[j - 1])
  50.   {
  51.   swap (a[j], a[j - 1]);
  52.   }
  53.   }*/
  54. pool[i] = new thread(sort_proc, a, i, size);
  55. pool[i]->join();
  56.  
  57. }
  58.  
  59. // Выводим отсортированный массив
  60. for (int i = 0; i < size; i++)
  61. {
  62. cout << a[i] << ' ';
  63. delete pool[i];
  64. }
  65. delete [] pool;
  66. return 0;
  67. }
Success #stdin #stdout 0s 11656KB
stdin
Standard input is empty
stdout
-6 -3 2 7 9 15 28