Это возможно только если у тебя хотябы внутри внешнего цикла нет зависимостей одной итерации от другой. Тогда каждую внешнюю итерацию можно "выбросить" в отдельный поток. Только несколько замечаний:
1. Подключение к БД (в твоих комментариях есть) надо сделать вне циклов/потоков. Т.е. подключение к БД должно быть строго одно.
2. Обращение к БД лучше всего синхронизировть между потоками, что бы с БД в один момент работал только один поток. Это желательно, хотя, возможно, и не требуется.
3. Кол-во потоков лучше ограничить каким-нибудь разумным числом, например 10 (не любит Винда очень много потоков. Для этого надо сделать очередь заданий и пул потоков. Каждый поток берет из очереди задание и обрабатывает его (код получения задания - в CriticalSection). Если заданий нет (очередь пуста), то поток завершается. Основной поток тем временем ждет, пока не будут завершены все потоки.
Как-то так.
|