Показать сообщение отдельно
  #1  
Старый 04.11.2010, 00:09
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию Интересный случай с потоками

Всем привет) Такая проблема возникла.
Есть программа, в ней используются потоки. Причем количество потоков задается числом в edit. Далее, в МЕМО вводятся фамилии, по одной на каждую строчку. И мне нужно в несколько потоков провести одинаковые действия со списком. Естественно встала проблема синхронизации(или как бы это назвать) . Т.е. нужно чтобы одновременно в каждом потоке был обработан свой элемент(не повторяясь).
Код прилагаю.(В этом коде все потоки идентичны и выполняют одинаковую работу несколько раз )

класс потока:
Код:
TMyTr = class(TgsvThread)
    http:TidHttp;
  protected
    procedure Execute; override;
  end;

Создаем и запускаем их:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  for i:=1 to spinedit1.Value do
  begin
    thr[i]:=TMyTr.Create;
    thr[i].Pause(1);
    thr[i].Resume;
  end;

Сам поток выглядит так:

Код:
procedure TMyTr.Execute;
var
//переменные
begin
  //обрабатываем элементы мемо
end;

Чую, как то можно сделать, но до меня не допрет никак
прошу здесь помощи)

ЗЫ мб делить список на куски и раздавать каждому потоку свой кусок? незнаю как реализовать... или может есть способ легче?
Ответить с цитированием