Я изменил LIMIT на 50000, и он выдает ошибку из-за нехватки памяти, чего я и ожидал, после примерно 32 000 потоков.В противном случае он работает нормально.
Я сделал это небольшое изменение, чтобы остановить выполнение при ошибке pthread_create.
if ( ret_val )
{
printf("Couldn't create thread number %d - %s\n", iter, strerror(ret_val) );
fflush(stdout);
exit(1);
}
Поскольку вы не останавливаетесь на ошибке, возможно, вы просто провалились и начали печатать числаи не видел ваше сообщение об ошибке?
В любом случае я предполагаю, что ошибка будет относиться к вашей машине.Потоки действительно используют память, а память не бесконечна, хотя 380 кажется немного низким.Может быть, размер стека потоков установлен на вашем компьютере слишком высоко?
Поскольку это игрушечная программа, измените ее, чтобы она начала печатать после ошибок pthread_create, а затем вернитесь назад и продолжите создание потоков снова.Вы должны pthread_join в ваши темы или создать их как отдельные.