#include <iostream>
void print_multiple(int (*pint)[2][4], int rows)
{
int (*parr)[2][4] = pint;
for(int i = 0; i < rows; ++i)
{
for(int j = 0; j < 2; ++j)
{
for(int k = 0; k < 4; ++k)
{
std::cout << "parr[" << i << "]["
<< j << "][" << k << "] == " << parr[i][j][k] << "\n";
}
}
}
}
int main()
{
int arr3d[3][2][4] = {
{{1, 2, 3, 4}, {5, 6, 7, 8}},
{{9, 10, 11, 12}, {13, 14, 15, 16}},
{{17, 18, 19, 20}, {21, 22, 23, 24}}};
print_multiple(arr3d, 3);
}
осталось "свободных" 11.
Возможно у вас получается 12 процессов обращаются к диску... даже на ssd это очень медленно по сравнению с ОЗУ. Плюс к этому кэш память то же не резиновая.
Для начала попробуйте загрузить все в ОЗУ, что бы к диску не обращаться и разбить данные на 10 (или меньше) потоков, и обрабатывать данные кусками (размер кэша процессора / кол-во потоков)