Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Потокобезопасность [D7]


Страницы:   1 2

Чародей ©   (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" трудно? ведь все сразуже становиться понятно!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо