Например, у меня есть одноядерный компьютер. Моя программа должна сканировать веб-сайт и искать новый файл. Всякий раз, когда он находит новый файл, он загружает его и загружает в другое место.
Теперь у меня есть два варианта реализации моей программы:
Вариант 1: Создать одну ветку для сканирования веб-сайта , Этот поток будет запускаться каждую секунду. Всякий раз, когда он находит новый файл, он порождает новый поток для загрузки файла и загрузки его. (например, если он сканирует 5 новых файлов, он порождает 5 потоков + 1 исходную ветку сканера)
Вариант 2. Просто создайте 2 потока, 1 для сканирования, другой для загрузки и выгрузки. Другие файлы будут помещены в очередь.
Какой вариант более целесообразен? На мой взгляд, я думаю, что вариант 2 имеет больше смысла, потому что онлайн-поток 1 может использовать файл, а inte rnet i / o один раз, куча потоков только часто вызывает переключение контекста и создает накладные расходы. Я прав?