Thread içinde IBX ile FB'e erişirken dikkat!

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Thread içinde IBX ile FB'e erişirken dikkat!

Mesaj gönderen fduman »

viewtopic.php?p=41955#41955 bahsi geçen konuşma üzerine FB'ü zorlayan bir uygulama yapmaya giriştim. Thread ile eş zamanlı bağlantılar açacak ve veri fetch edecekti.

Thread sınıfını hazırladım. Herşeyi kontrol ettim. 1 thread ile çalıştırdığımda hiçbir problem yoktu. Veri alıyordu. Ancak 2 ve üzeri thread ile çalıştırdığımda program çakılıyor donup kalıyordu.

Önceleri IBX componentlerinin thread-safe olmayacağı aklıma geldi. Ancak bu tarz uygulamaların yapıldığını biliyordum. Böyle olamazdı. Gene de araştırdım.

Neyse lafı uzatmayayım. Problemin databasename'i direkt dosya olarak atadığımdan oluştuğu ortaya çıktı. Yani TIBDatabase'in DatabaseName property'sini "C:\TEST.FDB" olarak atıyordum.

Ancak bir sitede rastladığım uyarı ile hatanın bu atamadan olduğunu anladım. Thread içinde kullanıldığında "localhost:C:\TEST.FDB" :!: olarak atama yapılmalıydı. (veya server'ınız neyse localhost yerine yazın) Yani IBX componentleri direkt erişimde thread'de çakılıyor. Thread'deyken server ile bir socket üzerinden haberleşmeliler. :!:

Aklınızda olsun.

Bir de thread uygulamaları için TIBConnectionBroker çok güzel bir bileşen.
Bağlantıyı ve transaction'ı kendisi oluşturup size veriyor. Ön bağlantıyı hazır etme imkanı da mevcut. Siz bana 20 connection hazır et diyorsunuz. Bağlansın bağlanmasın 20 connection hazır ediliyor. Talep halinde bu hazır connection size veriliyor. Multi-thread uygulamaları için faydalı.

Kolay gelsin.
Cevapla