Thread hakkında
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 17
- Kayıt: 23 Eyl 2015 12:43
Thread hakkında
Merhaba Arkadaşlar,
Şöyle bir yapım var
AnaThread altında
if x=1 then
1. thread
end
else
2. thread
end;
Yani ana thread içinde belli koşullar sağlandığında 1. thread aksi takdirde 2. thread çalışmaktadır. Bu mantık doğrumudur. Threadler arasında bir iç içe çalışmaları dışında bir bağlantı olmamasına rağmen yanlış bir kullanımım söz konusu mu dur.
Bir de bir thread execute edildiğinde terminate olana dek içindeki kod çalışır mı ? (Timer mantığı gibi)
Kolay gelsin
Şöyle bir yapım var
AnaThread altında
if x=1 then
1. thread
end
else
2. thread
end;
Yani ana thread içinde belli koşullar sağlandığında 1. thread aksi takdirde 2. thread çalışmaktadır. Bu mantık doğrumudur. Threadler arasında bir iç içe çalışmaları dışında bir bağlantı olmamasına rağmen yanlış bir kullanımım söz konusu mu dur.
Bir de bir thread execute edildiğinde terminate olana dek içindeki kod çalışır mı ? (Timer mantığı gibi)
Kolay gelsin
Re: Thread hakkında
Kodlarını görmediğim için çok detaylı bir bilgi paylaşımı yapamayacağım ancak neden 2 ve 3. threadlar var. Tek thread içindeki execute içerisinde if bloğu tanımlayamaz mısın?
Execute içeriğine göre değişir. İçerisinde bir döngü ya da repeat-until gibi bir şeyler varsa olur tabii. Aksi halde görevini tamamlar ve bir daha çalışmaz.ir de bir thread execute edildiğinde terminate olana dek içindeki kod çalışır mı ? (Timer mantığı gibi)
-
- Üye
- Mesajlar: 17
- Kayıt: 23 Eyl 2015 12:43
Re: Thread hakkında
Ana thread içinde kontrol edilmesi gereken koşullar var. Bu koşulların durumuna göre aynı anda farklı işleri yapsınlar diye 2. ve 3. threadlar var.
Aslında Ana thread içinde if bloğu var. Makaleleri okumama rağmen iç içe kullandığımızda sorun yaşarmıyım kısmında kafam karıştı..
Aslında Ana thread içinde if bloğu var. Makaleleri okumama rağmen iç içe kullandığımızda sorun yaşarmıyım kısmında kafam karıştı..
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Thread hakkında
Bence bunlar sorulmaz, bir köşeye çekilip denemeler yanılmalarla aranan cevaplara ulaşılabilecek meseleler bunlar hep
.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: Thread hakkında
Tek threadla halledilir Tevent kullanmaniz gerekir kisacasi waitfor ile infinite kadsr bekleyip bir degiskene deger atayip sonra eventi set edip kapiyi acmaniz ve verdiginiz degiskene gore sart kosturup gerekli proseduru isletin kapiyi acip if e dallanip asil proseduru cagirmadan once eventi resetleyip kapiyi kapatmaniz lazim. Execute icerisinde sonsuz dongu while not terminated do ...
Yazip executeyi canli tutmaniz lazim.
Mobilim yoksa kod yazip verecektim
Kolay gelsin.
Yazip executeyi canli tutmaniz lazim.
Mobilim yoksa kod yazip verecektim

Kolay gelsin.
-
- Üye
- Mesajlar: 17
- Kayıt: 23 Eyl 2015 12:43
Re: Thread hakkında
Cevaplarınız için teşekkür ederim.
Boş vaktinizde bizim için öğrenmemize yardımcı olması amacıyla bir kod yazabilir misiniz
Saygılarımla..
Boş vaktinizde bizim için öğrenmemize yardımcı olması amacıyla bir kod yazabilir misiniz
Saygılarımla..
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: Thread hakkında
Yarın yazarım inşAllah.
Kolay gelsin.
Kolay gelsin.
-
- Üye
- Mesajlar: 17
- Kayıt: 23 Eyl 2015 12:43
Re: Thread hakkında
Bekliyoruz. Tekrar teşekkürler.
-
- Üye
- Mesajlar: 17
- Kayıt: 23 Eyl 2015 12:43
Re: Thread hakkında
Vaktiniz olmadı herhalde;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Thread hakkında
İlk sorudan bu güne kadar geçen 6 günlük sürede sıkı bir ar-ge çalışması yapmış olsaydınız konuda sorulacak en ağır sorulara cevap verecek kadar uzmanlaşmış olacaktınız. Yazdıklarım biraz kısa olabilir ama buradan aleyhinizde yazdığım algısına sakın kapılmayın. İnanın muazzam derecede lehinizde sonuç alacağınız tek yol budur.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 17
- Kayıt: 23 Eyl 2015 12:43
Re: Thread hakkında
Bu sadece benim için değil diğer arkadaşlarımız içinde faydalı olabilecek bir konu. O yüzden bende konu üzerinde araştırmalarıma devam ediyorum test yapıyorum. Birilerin konu hakkında cevap yazması için beklemiyorum. Cevap yazacak arkadaşların yazacakları bir cevap varsa özelden değilde buradan yazmasının herkes için daha paylaşımcı bir yaklaşım olacağı düşüncesindeyim.
saygılarımla.
saygılarımla.
Re: Thread hakkında
Selamlar,
Sabanakman kardeşimiz genel olarak forumu takip eden diğer arkadaşlara da örnek olması açısından bir tavsiyede bulunmuştu. Sizin de yanlış anlamayışınız ve olumlu katkıda bulunmaz da güzel bir davranış oldu. Öncelikle bunu belirterek başlayalım ve Thread'ler konusunda tavsiye edeceğim ve dikkat edilmesi gereken birkaç noktayı belirtmek istiyorum.
Thread kullanımlarında Main thread'i dondurmamaya dikkat edin. Eğer main Thread'i dondurursanız programınız durduk yere kilitlenir. Ardından Thread kullanımlarında elden geldiğince her thread kendi içindeki Local Değişkenleri kullanmalı. Global değişkenlere erişim sırasında hata alabilirsiniz. Çünkü bir bellek bölgesindeki değişkendeki değeri bir Thread okumaya çalışırken diğeri yazmaya kalkarsa burada program kırılır. Veya benzeri ters durumda aynı anda iki farklı thread bir global değişkene aynı anda erişmeye kalkarsa Threadleriniz kırılır ve hata alırsınız. Thread safe diye bahsedilen yapılarda oluşturulan mantıklar, hiç bir thread'in, bir başka thread'i etkilemesi söz konusu değildir ve yukarıda bahsettiğim genel kurallar gözetilerek yazılır. Bunun dışında dikkat edilmesi gereken bir iki nokta daha var. Bunlar da Global değişkenlere erişimde veya bir Listeye veya herhangi ortak kullanılan bir şeye erişim gerektirdiğinde bu erişilecek şeyin öncesinde threadinizin bir şekilde o nesneyi LOCK etmesi veya Thread Processlerini bir Critical section ile erişime durdurması/beklemeye alması ve işini gördükten sonra da serbest bırakması (UnLock, CrtircalSection.Leave gibi.) gerekmektedir. Çünkü programlarda illa ki karşınıza global bir nesnenin veya değişkenin kullanımı gerekecektir. Bir de ana thread ile senkronize birşeyler yapmanız gerekebilir bu durumda da Synchronize kullanmanız gerekecektir.
Bu bahsettiğim şeylere dikkat ederseniz Thread'lerde rahat edersiniz aksi halde hem Trace/Debug etmesi zordur hem de rastgele şekilde çalışan threadlerde sorun çözmeniz zor olur.
Size biraz Critical Section ve Multi Threadig ile ilgili birkaç bağlantı paylaşayım. Bunları okuyup incelerseniz bilgiler daha da oturacaktır.
http://edn.embarcadero.com/article/22411
http://www.delphicorner.f9.co.uk/articles/op4.htm
http://forum.codecall.net/topic/70827-v ... threading/
http://delphi.about.com/od/kbthread/
Kolay Gelsin
Sabanakman kardeşimiz genel olarak forumu takip eden diğer arkadaşlara da örnek olması açısından bir tavsiyede bulunmuştu. Sizin de yanlış anlamayışınız ve olumlu katkıda bulunmaz da güzel bir davranış oldu. Öncelikle bunu belirterek başlayalım ve Thread'ler konusunda tavsiye edeceğim ve dikkat edilmesi gereken birkaç noktayı belirtmek istiyorum.
Thread kullanımlarında Main thread'i dondurmamaya dikkat edin. Eğer main Thread'i dondurursanız programınız durduk yere kilitlenir. Ardından Thread kullanımlarında elden geldiğince her thread kendi içindeki Local Değişkenleri kullanmalı. Global değişkenlere erişim sırasında hata alabilirsiniz. Çünkü bir bellek bölgesindeki değişkendeki değeri bir Thread okumaya çalışırken diğeri yazmaya kalkarsa burada program kırılır. Veya benzeri ters durumda aynı anda iki farklı thread bir global değişkene aynı anda erişmeye kalkarsa Threadleriniz kırılır ve hata alırsınız. Thread safe diye bahsedilen yapılarda oluşturulan mantıklar, hiç bir thread'in, bir başka thread'i etkilemesi söz konusu değildir ve yukarıda bahsettiğim genel kurallar gözetilerek yazılır. Bunun dışında dikkat edilmesi gereken bir iki nokta daha var. Bunlar da Global değişkenlere erişimde veya bir Listeye veya herhangi ortak kullanılan bir şeye erişim gerektirdiğinde bu erişilecek şeyin öncesinde threadinizin bir şekilde o nesneyi LOCK etmesi veya Thread Processlerini bir Critical section ile erişime durdurması/beklemeye alması ve işini gördükten sonra da serbest bırakması (UnLock, CrtircalSection.Leave gibi.) gerekmektedir. Çünkü programlarda illa ki karşınıza global bir nesnenin veya değişkenin kullanımı gerekecektir. Bir de ana thread ile senkronize birşeyler yapmanız gerekebilir bu durumda da Synchronize kullanmanız gerekecektir.
Bu bahsettiğim şeylere dikkat ederseniz Thread'lerde rahat edersiniz aksi halde hem Trace/Debug etmesi zordur hem de rastgele şekilde çalışan threadlerde sorun çözmeniz zor olur.
Size biraz Critical Section ve Multi Threadig ile ilgili birkaç bağlantı paylaşayım. Bunları okuyup incelerseniz bilgiler daha da oturacaktır.
http://edn.embarcadero.com/article/22411
http://www.delphicorner.f9.co.uk/articles/op4.htm
http://forum.codecall.net/topic/70827-v ... threading/
http://delphi.about.com/od/kbthread/
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Thread hakkında
Ayrıca "Derinlemesine Thread" hazineleri de çok gizli saklı bir yerde değil, orta yerde öylece ihtiyaç sahiplerini beklemektedir 

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Thread hakkında
Hazır yeri gelmişken ve Adnan hocamızı da yakalamışken Thread konusunda bir iki toplantı yapalım mı , ne dersiniz?
-
- Üye
- Mesajlar: 17
- Kayıt: 23 Eyl 2015 12:43
Re: Thread hakkında
Arkadaşlar bilgilendirmeleriniz için hepinize teşekkür ederim.
Saygılarımla..
Saygılarımla..