Semaphore ve Thread Yönetimi

25-12-2005

En sonunda ISBNExtractor' ü bitirip listemden silmeye karar verdim. İstatistikler gibi yeni özellikler ve hataları gidererek ilerliyorum (Tabii ki artık VS 2005 RTM üzerinde !).

Kullandığım multitreading sistemi pek stabil değildi. Özellikle 100+ ebook taramaya başladığımda thread' ları açarken 15sn.' ye kadar GUI' i kitliyordu. Bu da tabii ki istemediğimiz bir şey. Temel sorunlardan birinin 10' lu multithreading' i bu kadar ağır bir işte kullandığımdan dolayı olduğunu anladım. 3' lü çok daha verimli çalışıyor çünkü zaten işlemin cevap süreleri yeterince kısa.

Mesela bir HTTP işlemi yapıyor olsaydık thread sayısını bağlantımıza göre gönül rahatlığı ile 50' ye de çıkartabiliriz ancak bu şekilde bekleme değil işlemci gücüne dayalı işlerde threading' i biraz daha sık dokumak gerekiyor.

İkinci ciddi sorun ise thread' ları hiç bekletmeden WaitOne() sinyalini vermemdi. Bu da açılışları ciddi bir şekilde kilitliyor. Bunun yerine tüm threadları Thread.Sleep(500) ile beklettikten sonra _Semaphore.WaitOne() ile devam ediyorum. Bu sayede ilk açılıştaki kilitenmelerden kurtulmuş olduk.

Recent Blog Posts

See all of the blog posts