- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
var
Form1: TForm1;
tlst:tthreadlist;
implementation
{$R *.dfm}
function getCount : integer;
begin
Result := tlst.LockList.Count;
tlst.UnlockList;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
tlst:=tthreadlist.Create;
end;
{ tmythread }
constructor tmythread.create(filename: string);
begin
self.FreeOnTerminate:=true;
self.filename:=filename;
inherited create(true);
self.Priority:=tphigher;
self.Resume;
tlst.LockList.Add(self);
tlst.UnlockList;
end;
destructor tmythread.destroy;
begin
tlst.Remove(self);
tlst.UnlockList;
end;
procedure tmythread.execute;
begin
while not terminated do
sleep(100); // в качестве примера, чем-то нагружаем цикл.
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
n:string;
temp:tmythread;
s:string;
begin
for i:=0 to getcount-1 do
begin
temp:=tlst.LockList.Items[i]; // вот это место. Как Вам кажется, это правильно, или не?
if assigned(temp) then
n:=temp.filename;
if n='ololo' then // это просто пример, не смеемся) АХАХАХАХ )
begin
showmessage('Сканирование этого файла уже выполняется') ;
exit;
end;
end;
tmythread.create('ololo');
end;
end.
Стоит задача сканировать файлы в разных потоках. Как Вам кажется, это адекватное решение?
govnomonad 02.07.2013 11:56 # −1
>Как Вам кажется, это адекватное решение?
Stertor 02.07.2013 12:21 # −3
Не нашел иного способа управления потоками(
ADR 02.07.2013 13:34 # +1
2. В Delphi 2009+ є модуль System.Generick.Collections
В ньому є TThreadQueue і TThreadList
Просто пиши все що треба з різних потоків у ці об'єкти і читай з них в головному потоці, не переживаючи за синхронізацію.
Stertor 02.07.2013 12:17 # −3
http://www.govnokod.ru/13283
Stertor 02.07.2013 14:54 # −3
Stertor 09.07.2013 09:40 # −2
Минуисуя участников, ты помогаешш обществу снижать ЧСВ.