frekans50
⁵⁰
- Katılım
- 8 Ekim 2022
- Mesajlar
- 1,051
Mikrodenetleyici programlarından bildiğimiz Watchdog uygulamasını bilgisayar için yaptım.
Thread ile çalışırken bir şeylerin ters gitmesi ve kilitlenme durumları için yararlıdır.
Donanım kaynaklı kilitlenmeler, bu yöntemi zorunlu hale getirdi.
Çalışma şekli:
Bir thread işe başlamadan önce, bir süre sonra kendisini sonlandıracak başka bir thread başlatıyor.
İşi zamanında yapabilirse katili kendisi öldürüyor.
Thread ile çalışırken bir şeylerin ters gitmesi ve kilitlenme durumları için yararlıdır.
Donanım kaynaklı kilitlenmeler, bu yöntemi zorunlu hale getirdi.
Çalışma şekli:
Bir thread işe başlamadan önce, bir süre sonra kendisini sonlandıracak başka bir thread başlatıyor.
İşi zamanında yapabilirse katili kendisi öldürüyor.
Kod:
unit Unit1;
....
procedure TWorker.Execute;
var
dog: TWatchDog;
begin
dog := TWatchDog.Create(true); // dog: kendisini öldürecek thread
dog.th := self;
dog.TimeTowait := 5000;
dog.Resume;
while not terminated do
begin
windows.beep(5000, 50); // "Yaşıyorum" mesajı.
sleep(500);
// Süre bitmeden katilin işine son vermek isterse
// if vazgectim then do ThreadKill(dog); // katili öldür
end;
end;
procedure TWatchDog.Execute;
begin
sleep(timetowait);
windows.Beep(3000, 500); // Süre tamam. Ateş ediyor
if assigned(th) then
ThreadKill(th);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
worker := tworker.Create(false);
end;
end.
Ekler
Son düzenleme: