Изучаю многопоточность в С++. Сделал простую программку на создание и вывод двумерного массива. Если массив больше 50х50 элементов то должен работать поток если меньше то работать должно без потоков. Но при работе с потоком программа выдает ошибку которая видна на скрине. Подскажите пожалуйста что не так.
#include <iostream>
#include <cstdlib>
#include <thread>
using namespace std;
void arrayBig(int rowLength, int columnsLength)
{
int i, j;
int arr[1000][1000];
for (i = 0; i <= rowLength - 1; i++)
{
for (j = 0; j <= columnsLength - 1; j++)
{
arr[i][j] = rand() % 10;
}
}
for (i = 0; i <= rowLength - 1; i++)
{
for (j = 0; j <= columnsLength - 1; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int arrayLitle(int rowLength, int columnsLength)
{
int i, j;
int arr[1000][1000];
for (i = 0; i <= rowLength - 1; i++)
{
for (j = 0; j <= columnsLength - 1; j++)
{
arr[i][j] = rand() % 10;
}
}
for (i = 0; i <= rowLength - 1; i++)
{
for (j = 0; j <= columnsLength - 1; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
return arr[i][j];
}
int main()
{
int columnsLength = 0, rowLength = 0;
cout << "Укажите длину массива!\n";
cout << "Введите размер ряда: ";
cin >> rowLength;
cout << "Введите размер столбцов: ";
cin >> columnsLength;
if ((rowLength >= 50) || (columnsLength >= 50))
{
cout << "Работают потоки!" << endl;
std::thread aB(arrayBig, rowLength, columnsLength);
if (aB.joinable())
aB.join();
}
else
{
cout << "Справимся без потоков!!!" << endl;
arrayLitle(rowLength, columnsLength)
}
system("pause");
return 0;
}
Ну, я бы не назвал это многопоточностью... Вы просто делаете то же, что в основном потоке, в другом. Ну да ладно...
Но у вас для
int arr[1000][1000];
требуется, грубо говоря, 4 мегабайта стека. Не многовато ли? попробуйте выделять эту память динамически, или потренируйтесь на массиве, скажем, 100 на 100...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пробовала разные варианты создания на выходе файла DLL, который содержит несколько строк, поскольку изучаю C# - C++ непонятен совсем