29-08-2016, Saat: 22:18
(29-08-2016, Saat: 17:17)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Son dönemlerde adını sıkça duyduğumuz Paralel Programlama (Parallel Programming) yavaş yavaş bizim (Delphi) de literatürümüze girmeye başladı. Belirtmiş olduğunuz kapsamda System.Threading referansı içerisinde yer alan TTask sınıfı işinizi görecektir. Tuğrul Hocamızın da belirttiği linklerde bir çok alternatif yöntem kullanılabilir.
TTask sınıfının genel kullanımına bir örnek;
Uses bölümüne eklenecek referans
Uses System.Threading;
Örnek Thread Yapısı
TTask.Run( procedure begin // Ana Thread işlemimiz TThread.Synchronize(Nil, procedure begin // Yapılan ana işlem içerisinde eşzamnlı çalışacak tali bir iş end); end);
Aynı işlemi İsimsiz (Anonymous) thread'lar ile de yapabilirsiniz.
Örneğin, Delphi Can formumuzun HTML kodlarını AnonymousThread ile alalım:
Uses System.Threading, System.Net.URLClient, System.Net.HttpClient
....
TThread.CreateAnonymousThread( procedure var strHTML: TStringStream; strHttp: THttpClient; begin strHttp := THttpClient.Create; strHTML := TStringStream.Create; try strHttp.Get('http://www.DelphiCan.com', strHTML); TThread.Synchronize(nil, procedure begin Memo1.Text := strHTML.DataString; end); finally strHttp.free; strHTML.free; end; end).Start;
Küçük bir ekleme yapayım. Mümkün mertebe Synchronize kullanmayın onun yerine Queue kullanın. Aksi durumda deadlock yaşayabilirsiniz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...