C:\Program Files\Borland\Delphi7\Demos\Threads
Borland bu örnekle sanki sort örneği vermiş gibi
Bu karışık bir konuyu bu kadar karışık anlatılabilirdi...
Bu örneği Açıklayabilecek arkadaş varmı acaba?
Bu nasıl Bir Thread Örneği Anlamadım....
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Bu nasıl Bir Thread Örneği Anlamadım....
Siz hayal edin...Biz yapalım TuannaSoft...
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Örneğe göre sıralamalar aynı anda başlıyor ve bitişi sıralamaya göre bitiyor. . Pek anlamam ama, bu iş için sadece THRead temel sınıftan türetilen kendine ait sınıflar kullanman gerekiyor o kadar. Önemli olan bazı metotları kendine göre hazırlamalısın, ve VCL'e kanallardan erişmeye çalışmamalısın.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Kod: Tümünü seç
ype
TmyThread=class(TThread)
procedure Execute;override;
procedure islem;
end;
var Kanal:TmyThread;
procedure TmyThread.Execute;
begin
while not Terminated do islem;
end;
procedure TmyThread.islem;
begin
//Yoğun çalışacak kodlar
end;
Kod: Tümünü seç
procedure TmyThread.Execute;
begin
while not Terminated do Synchronize(islem);
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Eğer kanallar (THREAD) ortak değerlere ulaşması durumnda kanal içinde kritik bölgeler oluşturarak bu bölgelerde ortak değişkenlere erişim yapılabilir.
Böylelikle kanallar aynı değişkeni değiştirme esnasında (okuma için gerekmiyor - gerekmeyebilir) çakışma yaşamazlar.
THread olayı gerçekten çok faydalı ama çokta zor bir konu diyebilirim. Başlangıçta bir kaç denemeden sonra mantığını anladığımızda, ilk başlara göre daha net anlıyacaksınız.
Bana göre hemen her programda kullanılması gerekn bir işlevdir. Teorik olarak Türkiye'de program yazan kişiler, bilgisayarı sadece kendileri çalıştığı varsayarak program yazıyorlar. Oysa kendi yazdıkları program ile beraber diğer başka programlarda çalışmaktadır. Bu nedenle bilgisayarda çalışan programların eşit olarak kaynakları kullanması, işletim sistemine barışı getirecektir.
Yoğun raporlama, arama ve kayıt sırsında THREAD kullanılması mümkündür. Ve faydalıda olacaktır.
THREAD'larda en sık başınıza gelecek sorunlardan birkaçı, hafıza taşmaları ve hata ayıklama işlevleri olacaktır.
Şöyle bir drama yazayım. Kanalları izah etmek ve kanal teorisi dışında işlev yapan programlara örnek. Gerçek hayata uygulayarak anlatmaya çalışayım.
Doğru mu bu?
HAYIR.
Başa dönecek olursak. Çocuğun parka gitme isteğini red edip, doğruca eve giderek, daha güvenli bir gün geçirmek mümkündü. Hem akşam olmak üzereyken parka gitmenin bir alemi yoktu.
Ya da çocuğu park yerine bir hamburgerciye götürmeyi ikna etmekte mümkündü. Daha güvenli olma açısından.
Bu uzar gider.
Şimdi bunları yazdım,. Çünkü, gerçek hayatta KANAL sistemine ve sistemin kararsızlaşması durumuna örnek vermek istedim. Bilgisayar programlarıda aslında gerçek hayattaki gibi bir takım verilere göre çalışır. Ortam ve veilrer farklı olabilir. Ama karar verme mekanizması insani yapım olan programlarda yine aynıdır.
THREAD bir program için iyi bir yöntemdir. Her şeyi THREAD içine koymak gerekmeyebilir. Ama THREAD kullandığınızda, aklınızın bir köşesinde, yeni yazacağınız fonksiyon işlerken, bir yandan da THREAD'lerinde işleyebileceğini unutmamanız gerekiyor. Çok dikkat isteyecektir.
Umarım, THREAD konusuna farklı bir yaklaşım ile anlattığım bu yazı ile bazı şeyleri daha iyi netleştirmişsinizdir.
Saygılar.
Böylelikle kanallar aynı değişkeni değiştirme esnasında (okuma için gerekmiyor - gerekmeyebilir) çakışma yaşamazlar.
THread olayı gerçekten çok faydalı ama çokta zor bir konu diyebilirim. Başlangıçta bir kaç denemeden sonra mantığını anladığımızda, ilk başlara göre daha net anlıyacaksınız.
Bana göre hemen her programda kullanılması gerekn bir işlevdir. Teorik olarak Türkiye'de program yazan kişiler, bilgisayarı sadece kendileri çalıştığı varsayarak program yazıyorlar. Oysa kendi yazdıkları program ile beraber diğer başka programlarda çalışmaktadır. Bu nedenle bilgisayarda çalışan programların eşit olarak kaynakları kullanması, işletim sistemine barışı getirecektir.
Yoğun raporlama, arama ve kayıt sırsında THREAD kullanılması mümkündür. Ve faydalıda olacaktır.
THREAD'larda en sık başınıza gelecek sorunlardan birkaçı, hafıza taşmaları ve hata ayıklama işlevleri olacaktır.
Şöyle bir drama yazayım. Kanalları izah etmek ve kanal teorisi dışında işlev yapan programlara örnek. Gerçek hayata uygulayarak anlatmaya çalışayım.
Kod: Tümünü seç
Siz iş çıkışı çocuğunuzu okuldan alıyorsunuz. Elinizde iş çantnız var. İçinde iş için gerekli evrak olduğunu var sayalım. Ayrıca çocuğunuzun çantasıda elinizde. Çocuğu okuldan aldıktan sonra ona bir mağazadan pahalı bir ayakkıbıda alıyorsunuz. Çünkü maaşınızı henüz aldınız ve çocuğunuza bir sözünüz vardı.
Eve dönüş yolunda çocuğunuz bir parkta oyun oynamak istiyor ve sizde kabul ediyorsunuz. Bir parka gidip uygun bir bank bulup oturuyor ve çocuğunuzda salıncak ve kaydıraklarda eğlenmeye başlıyor.
Çocuğunuza uzaklığınız kabul edilebilr bir uzaklıkta. Bri sorun olduğunda yetişmeniz 3-5 saniyenizi alacaktır. Herşey yolundadır.
Bu arada çantanızı ve diğer eşyaları bankın boş yerine koyuyorsunuz. Çantadan çıkarttığınız gazeteyi okumaya başlıyorsunuz.
Şu an için herşey yolunda. Ama (bir kanal oluşturup) arada bir göz ucuyla çocuğunuzu kontro ediyorsunuz. Bunu hem gazete okumanızı engellemeyecek hem de çocuğu riske sokmayacak şekilde yapıyorsunuz. Heşey yolunda. Sistem düzgün çalışıyor.
Siz kurduğunuz sisteme güveniyorsunuz. Ama hesapta olmayan bir şeyler olacak birazdan. Ve sistem kararsız duruma gelecek.
O sıra banka doğru bir tinerci geliyor (sistem kuralları dışı çalışan bir program). Sizden para istiyor, elbette hiç beklemediğiniz bir anda, bu olayda tedirgin olmaya başlıyorsunuz. İlk olarak önemsiz olan gazete okuma işini yarıda kesip, tinerci ve çocuğunuza odaklanıyorsunuz. Artık gazete okuma işlevini yapmadığınız için bilgi akışı durdu. Tinerci ısrarla sizden para istiyor. Siz tinercilerin neler yapabileceğiniz konusunda endişeleriniz olduğu için ilk etapta agresif davranmıyor, onu başınızdan savmak için gitmesini istiyorsunuz. Tam o esnada, çocuğunuz sallanmakta olan salıncaktan düşüyor.
İlginizi otomatikman çok önemli olan görevinize veriyor ve çocuğ adoğru hamle yapmak istiyorsunuz. Ancak o esnada tinerci kolunuzdan tutuyor. Sizi bir kaç saniye de olsa işinizden alıkoyuyor.
Şimdi bank üstündeki çantaların ve çocuğun güvenliği gibi iki önemli işiniz var. Elbette çocuk daha önemli ama bank üstündeki çantaların da haybeye bir tinerci tarafından çalınmasınıda istemiyorsunuz. Üstelik çocuğunuza söz verdiğiniz bir ayakkabıyı aldığınız bir günde.
Sistem iyice karamsarlaşıyor. Bir an için en iyi çözümü bulmak için sistem kuralları dışında çalışan bu tinerciyi bertaraf etmenin yoluna bakıyor.
Tinerciye kafa atıp, onu anlık olrak etkisiz hale getirip, derhal çocuğu yerden kaldırıp, banka geri gelmeniz mümkün, ama geri geldiğinizde sinirli tinercinin tepkisinin ne olacağınıda bilmiyorsunuz.
Tinerciye, cebinizdeki rastgele bir parayı vererek de başınızdan savabilirsiniz
Ya da her ne olursa olsun, yeterki çocuğum zarar görmesin diyerek doğruca çocuğunuzada yönelebilirsiniz.
Bu düşünceler işte sizi yavaşlatıyor. Kanal teorisi falan hikaye oluyor. Çünkü siz ne kadarda iyi bir sistem kursanızda bir şeyler ters gidebiliyor.
HAYIR.
Başa dönecek olursak. Çocuğun parka gitme isteğini red edip, doğruca eve giderek, daha güvenli bir gün geçirmek mümkündü. Hem akşam olmak üzereyken parka gitmenin bir alemi yoktu.
Ya da çocuğu park yerine bir hamburgerciye götürmeyi ikna etmekte mümkündü. Daha güvenli olma açısından.
Bu uzar gider.
Şimdi bunları yazdım,. Çünkü, gerçek hayatta KANAL sistemine ve sistemin kararsızlaşması durumuna örnek vermek istedim. Bilgisayar programlarıda aslında gerçek hayattaki gibi bir takım verilere göre çalışır. Ortam ve veilrer farklı olabilir. Ama karar verme mekanizması insani yapım olan programlarda yine aynıdır.
THREAD bir program için iyi bir yöntemdir. Her şeyi THREAD içine koymak gerekmeyebilir. Ama THREAD kullandığınızda, aklınızın bir köşesinde, yeni yazacağınız fonksiyon işlerken, bir yandan da THREAD'lerinde işleyebileceğini unutmamanız gerekiyor. Çok dikkat isteyecektir.
Umarım, THREAD konusuna farklı bir yaklaşım ile anlattığım bu yazı ile bazı şeyleri daha iyi netleştirmişsinizdir.
Saygılar.
- mustafasoy
- Üye
- Mesajlar: 154
- Kayıt: 02 Ağu 2013 05:00
- Konum: istanbul
- İletişim:
Re: Bu nasıl Bir Thread Örneği Anlamadım....
hocam valla tebrik ederim entresan bir örnek olmuş
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.