pavel!
20.05.2012, 12:23
Всем привет, не как не могу справится с крит. секциями в многопоточность :( я уже вывел потоки в edit и пытаюся синхронизировать потоки, че бы да че но видимо из-за того что у меня нету критических секций(входа/выхода)
потоки идут не так как надо, чем больше потоков тем больше у меня бад аккаунтов, да и еще с чего-то они удваиваются.../md
Ребят объясните пожалусто с крит. секциями.
Вот мой код:
var
Form1: TForm1;
Thread, Acc:Integer;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] Tid[Ссылки могут видеть только зарегистрированные и активированные пользователи]
info:TStringList;
FAcc, FPas:string;
Work:Boolean;
implementation
{$R *.dfm}
constructor TNewThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Work:=True;
for Thread:=1 to strtoint(Form1.Edit1.Text) do
TNewThread.Create(false);
Thread:=strtoint(form1.Edit1.Text);
form1.Label1.Caption:='0';
form1.Label2.Caption:='0';
end;
procedure TNewThread.Execute;
var
i:Integer;
begin
for i:=0 to Form1.Memo1.Lines.Count-1 do
begin
FAcc:=copy(Form1.Memo1.Lines.Strings[i],1,Pos(';',Form1.Memo1.Lines.Strings[i])-1);
FPas:=copy(Form1.Memo1.Lines.Strings[i],Pos(';',Form1.Memo1.Lines.Strings[i])+1,length(Form1.Memo1.Lines.Strings[i])-Pos(';',Form1.Memo1.Lines.Strings[i])+1);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
[Ссылки могут видеть только зарегистрированные и активированные пользователи] ;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](form1.Edit2.Text);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'урл';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'урл./login';
info:=TStringList.Create;
info.Add('username='+FAcc);
info.Add('password='+FPas);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
form1.Gauge1.MaxValue:=i;
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]урл/', info);
except
end;
if Pos('Location:', [Ссылки могут видеть только зарегистрированные и активированные пользователи])<>0 then
Rez:=1
else
Rez:=0;
info.Free;
Synchronize(Sync);
end;
dec(Thread);
if Thread=0 then ShowMessage('OK');
end;
procedure TNewThread.Sync;
begin
case Rez of
1: begin
form1.RichEdit1.SelAttributes.Color:=clRed;
form1.RichEdit1.Lines.Add(FAcc+';'+Fpas);
Form1.Label1.Caption:=IntToStr(StrToInt(Form1.Labe l1.Caption)+1);
Form1.Gauge1.Progress:=Form1.Gauge1.Progress+1;
end;
0: begin
Form1.Label2.Caption:=IntToStr(StrToInt(Form1.Labe l2.Caption)+1);
Form1.Gauge1.Progress:=Form1.Gauge1.Progress+1;
end;
end;
end;
потоки идут не так как надо, чем больше потоков тем больше у меня бад аккаунтов, да и еще с чего-то они удваиваются.../md
Ребят объясните пожалусто с крит. секциями.
Вот мой код:
var
Form1: TForm1;
Thread, Acc:Integer;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] Tid[Ссылки могут видеть только зарегистрированные и активированные пользователи]
info:TStringList;
FAcc, FPas:string;
Work:Boolean;
implementation
{$R *.dfm}
constructor TNewThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Work:=True;
for Thread:=1 to strtoint(Form1.Edit1.Text) do
TNewThread.Create(false);
Thread:=strtoint(form1.Edit1.Text);
form1.Label1.Caption:='0';
form1.Label2.Caption:='0';
end;
procedure TNewThread.Execute;
var
i:Integer;
begin
for i:=0 to Form1.Memo1.Lines.Count-1 do
begin
FAcc:=copy(Form1.Memo1.Lines.Strings[i],1,Pos(';',Form1.Memo1.Lines.Strings[i])-1);
FPas:=copy(Form1.Memo1.Lines.Strings[i],Pos(';',Form1.Memo1.Lines.Strings[i])+1,length(Form1.Memo1.Lines.Strings[i])-Pos(';',Form1.Memo1.Lines.Strings[i])+1);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
[Ссылки могут видеть только зарегистрированные и активированные пользователи] ;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](form1.Edit2.Text);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'урл';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'урл./login';
info:=TStringList.Create;
info.Add('username='+FAcc);
info.Add('password='+FPas);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
form1.Gauge1.MaxValue:=i;
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]урл/', info);
except
end;
if Pos('Location:', [Ссылки могут видеть только зарегистрированные и активированные пользователи])<>0 then
Rez:=1
else
Rez:=0;
info.Free;
Synchronize(Sync);
end;
dec(Thread);
if Thread=0 then ShowMessage('OK');
end;
procedure TNewThread.Sync;
begin
case Rez of
1: begin
form1.RichEdit1.SelAttributes.Color:=clRed;
form1.RichEdit1.Lines.Add(FAcc+';'+Fpas);
Form1.Label1.Caption:=IntToStr(StrToInt(Form1.Labe l1.Caption)+1);
Form1.Gauge1.Progress:=Form1.Gauge1.Progress+1;
end;
0: begin
Form1.Label2.Caption:=IntToStr(StrToInt(Form1.Labe l2.Caption)+1);
Form1.Gauge1.Progress:=Form1.Gauge1.Progress+1;
end;
end;
end;