Если вы используете стандартные библиотеки C / C ++ POSIX с Windows, ответ «да», есть ограничение.
Однако, что интересно, ограничение накладывается тем типом библиотек C / C ++, которые вы используете.
Я сталкивался со следующим потоком JIRA (http://bugs.mysql.com/bug.php?id=24509) от MySQL. Они имели дело с той же проблемой, что и количество открытых файлов.
Однако Пол Дюбуа объяснил, что проблему можно эффективно устранить в Windows, используя ...
вызовы Win32 API (CreateFile (),
WriteFile () и т. Д.) И
максимальное количество открытых файлов по умолчанию
был увеличен до 16384.
максимум может быть увеличен в дальнейшем
используя опцию --max-open-files = N в
запуск сервера.
Естественно, вы можете получить теоретически большое количество открытых файлов, используя технику, похожую на пул соединений с базой данных, но это сильно скажется на производительности.
Действительно, открытие большого количества файлов может быть плохим дизайном. Однако в некоторых ситуациях вызов требует этого. Например, если вы создаете сервер базы данных, который будет использоваться тысячами пользователей или приложений, серверу обязательно придется открыть большое количество файлов (или понизить производительность при использовании методов объединения файловых дескрипторов).