Я бы создал поток, который может читать один URL и обрабатывать его содержимое.Затем вы можете решить, сколько из этих потоков вы хотите запустить одновременно.Ваш компьютер разрешит довольно много подключений, поэтому, если эти 100 сайтов имеют разные имена хостов, запускать 10 или 20 одновременно не проблема.Слишком много это излишне, но слишком мало - пустая трата процессорного времени.
Вы можете еще больше изменить этот процесс, имея отдельные потоки для загрузки и обработки, так что у вас может быть несколько потоков, постоянно загружающих контент.Загрузка не очень интенсивно использует процессор.В основном он ожидает ответа, поэтому вы можете легко получить относительно большое количество потоков загрузки, в то время как пара других рабочих потоков может извлекать элементы из пула результатов и обрабатывать их.
Но разделение загрузки и обработки приведет кэто немного сложнее, и я не думаю, что вы решаете эту проблему.
Потому что в настоящее время у вас есть другие проблемы.Во-первых, не нужно использовать компоненты VCL в потоке.Если вам нужна информация из списка в потоке, вам нужно будет использовать синхронизацию в потоке, чтобы сделать «безопасный» вызов основному потоку, или вам нужно будет передать необходимую информацию, прежде чем запускать поток.Последнее более эффективно, поскольку код, выполняемый с помощью Synchronize, фактически выполняется в главном потоке, что делает вашу многопоточность менее эффективной.
Но мое внимание на самом деле было обращено на первую строку: " загрузить источник веб-страницыв мемо-компонент".Не делай этого!Не загружайте эти результаты в памятку для обработки.Автоматическую обработку лучше всего выполнять в памяти, вне визуального контроля.Использование строк, потоков или даже списков строк для обработки текста намного быстрее, чем использование заметки.
Строковый список также имеет некоторые издержки, но он использует ту же конструкцию индексации строк (TMemoStrings, которая является свойством Lines Memo, и TStringList оба имеют одного и того же предка), так что если вы получили код, который используетиз этого будет довольно легко преобразовать это в TStringList.