![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потокобезопасность [D7]
Чародей © (2008-02-22 13:31:00)Написал следующий код(упрощено!). Не могу понять является ли он потоко безопасным? (таймеров может быть создано достаточно много)
procedure TForm1.tmrOnTime(Sender: TObject);
begin
args[(Sender as TTimer).Tag][0]:='';
args[(Sender as TTimer).Tag][1]:='';
(Sender as TTimer).Free;
end;
procedure TForm1.ProcessBackup;
var i,j,k:integer;
afn:string;
tmr : TTimer;
begin
for i:=0 to ListBox1.Items.Count-1 do
begin
afn:=CompileFile;
for j:=1 to ListBox2.Items.Count-1 do
if not WindowsCopyFile(afn,ListBox2.Items[j]) then
begin
tmr:=TTimer.Create(Form1);
tmr.Interval:=1000000;
tmr.Tag:=-1;
for k:=0 to Length(args)-1 do
if args[k][0]='' then
begin
tmr.Tag:=k;
args[k][0]:=afn;
args[k][1]:=ListBox2.Items[j];
break;
end;
if tmr.Tag=-1 then
begin
SetLength(args,length(args)+1);
tmr.Tag:=High(args);
args[High(args)][0]:=afn;
args[High(args)][1]:=ListBox2.Items[j];
end;
tmr.OnTimer:=tmrOnTime;
tmr.Enabled:=true;
end;
end;
end;
Сергей М. (2008-02-22 16:11:00) [1]
> Palladin © (22.02.08 15:37) [35]
А... ну да... 2-й - это чашечки, а дальше "чашки")
Palladin (2008-02-22 15:37:00) [2]
> Сергей М. © (22.02.08 15:29) [33]
стесьняюсь ответить :) в лифчиках чашечки, а не чашки :)
Плохиш (2008-02-22 15:35:00) [3]> Сергей М. © (22.02.08 15:25) [31]
>
> > Плохиш © (22.02.08 15:18) [29]
>
> Да уж не зверее тебя
Я сегодня мягкий и пушистый |-) Вот хожу, коллег с праздником поздравляю :-D
Кстати, тут ИШ объявился, в потрепаться зверствует, боюсь и сюда доберётся ;-)
Сергей М. (2008-02-22 15:29:00) [4]
> Palladin © (22.02.08 15:26) [32]
> нам чашки подарили
Стесняюсь спросить, неужели лифчики на подарки распотронили ?)
Palladin (2008-02-22 15:26:00) [5]а нам чашки подарили и тоже не налили... даже сока...
ну ниче... будет им... 8 марта...
Сергей М. (2008-02-22 15:25:00) [6]
> Плохиш © (22.02.08 15:18) [29]
>
>
Да уж не зверее тебя,)
Ну а вообще - да, не налили)... Что-то вдруг девочки наши корпоративные нас, "защитничков", сегодня сочком решили попотчевать)
Palladin (2008-02-22 15:18:00) [7]А думать о многопоточности очень удобно глядя на %Delphi%\Demos\Threads
Плохиш (2008-02-22 15:18:00) [8]
> Сергей М. ©
Ты чё сёдня зверствуешь? Не налили? :-))
Сергей М. (2008-02-22 15:16:00) [9]Стоя в углу на горохе заодно подумай про многопоточность)
Чародей (2008-02-22 15:11:00) [10]Фсе не бейти сильна, я фсе понял
*убижал в угол*
Сергей М. (2008-02-22 14:37:00) [11]
> я просто не знал
Да-да. Это, конечно же, уважительная причина
И исходники этого таймера Борландом открыты для серьезных пацанов, а не для паяцов)
Чародей (2008-02-22 14:35:00) [12]
> любые сообщения одним потоком
Это как это?? 0_0
А
RegisterClass + WNDCLASS(WNDPROC)+CreateWindow???????
В программировании без меня все изменили????
Сергей М. (2008-02-22 14:32:00) [13]А начиналось-то все так солидно и за здравие - "потокобезопасность")
Сергей М. (2008-02-22 14:31:00) [14]
> я просто не знал, что таймеры обслуживаются в порядке живой
> очереди
А причем здесь таймеры ?
Любыесобытия/сообщения в пределах одного и того же потока возбуждаются/обслуживаются в порядке "живой очереди".
Palladin (2008-02-22 14:29:00) [15]
> Чародей (22.02.08 14:27) [20]
любые сообщения однимпотоком обслуживаются в порядке этой самой живой очереди, они по другому не могут обслуживаться...
Palladin (2008-02-22 14:28:00) [16]мне вот даже в голову не пришло, что ты непонимаешь именноэто.
Palladin (2008-02-22 14:27:00) [17]А ты думал TTimer как то не через WM_TIMER работает?
На первой же страницы справки сказано
TTimer encapsulates the Windows API timer functions.
Чародей (2008-02-22 14:27:00) [18]я просто не знал, что таймеры обслуживаются в порядке живой очереди)))
Плохиш (2008-02-22 14:26:00) [19]
> > WM_TIMER
>
> АХААА, Спасобо за ответ! это все что требовалось
Рыдал...
Чародей (2008-02-22 14:26:00) [20]
> И после этого я паяц)
Да паяц! а что просто написать "WM_TIMER" трудно? ведь все сразуже становиться понятно!