Как запустить потоки в ограниченном количестве где указал пользователь?

mr.Ulugbek
Дата: 06.05.2011 09:14:54
Привет всем....
Подскажите пожалуйста как запустить потоки в цикле ограниченном количестве где указал пользователь?
with cdsOffday do
        begin
          pgProgress.max := cdsOffday.RecordCount;
          pgProgress.Position:=0;
          pgProgress.step := 1;
          while not Eof do
          begin
            AddLine('Формирование за дату: '+fieldByname('off_day').AsString);
            with cdsTmp do
            begin
              First;
              while not Eof do
              begin
                AddLine('Отделение  '+fieldByName('branch').AsString);
                SyncThread:=TChildThread.Create(true);
                SyncThread.FreeOnTerminate:=true;
                SyncThread.Priority:=tpLower;
                SyncThread.Resume;
                Next;
              end;
            end;
            pgProgress.StepIt;
            Application.ProcessMessages;
            if fScanExit then
                 Break;
           Next;
          end;  

CdsTemp это список отделение это тоже пользователь выбирает..
00001,00002,00003
CdsOfDay это датасет где пользователь выбирает период 01,01,2011 по 10,01,2011
потом с первого по десятого числа идет цикл
в цикле
формирование за дату 01,01,2011
цикл по отделению
список отделение
00001,
вот тут создаю поток с параметром 0001
00002,
вот тут создаю поток с параметром 0002
00003
вот тут создаю поток с параметром 0003


таких списков будет больше или меньше ..

Как мне создать поток сразу на 10 отделение...

после окончание еще 10 или после окончание из 10 потока одного потока сразу создался еще один поток... то есть добавился и не превышал количество где пользователь указал..
Заранее благодарен и извиняюсь за грамматику и орфо
Barmaley57
Дата: 06.05.2011 10:00:27
Семафор?
fd00ch
Дата: 06.05.2011 14:56:33
mr.Ulugbek, запусти нужное количество потоков и заставь их выдергать из очереди заданий по одному элементу до тех пор, пока очередь не станет пустой или юзер не прервет процесс
mr.Ulugbek
Дата: 06.05.2011 15:54:49
Пример ... пожалуйста
fd00ch
Дата: 06.05.2011 16:02:13
mr.Ulugbek, чего?
Barmaley57
Дата: 06.05.2011 16:02:58
mr.Ulugbek
Пример ... пожалуйста
Я думаю, что тут даже пожалуйста не поможет. Пример может оказаться не таким уж простым...