2010-06-18 12 views
5

Kullanıcı başına bir iş parçacığı yapmaktan farklı bir şekilde çalıştıklarını anlıyorum. Bu tam olarak nasıl çalışır? Twisted belgelerinetwisted/tornado et cetera nasıl çalışır

(? Vermez 'engellenmeyen' onunla ilgili bir şey)

+0

Bazı şeyler hala belirsizse org.deftserver.web.IOLoop sınıfına bir göz atın. (www.deftserver.org) – Schildmeijer

cevap

6

:

reaktör Twisted içinde olay döngü çekirdeğidir - döngü hangi Twisted kullanarak uygulamaları kullanıyor. Olay döngüsü, bir programdaki olayları veya mesajları bekleyen ve gönderen bir programlama yapısıdır. Bir etkinlik gelene kadar genel olarak engelleyen ve sonra ilgili olay işleyicisini ("olayı gönderir") çağırdığı bazı dahili veya harici "etkinlik sağlayıcısı" diyerek çalışır. Reaktör, ağ iletişimi, iş parçacığı ve olay gönderimi de dahil olmak üzere bir dizi hizmet için temel arabirimler sağlar. İçinde (olay kaynağının her türlü fazla ikisinden daha genel ya,) birden fazla soket üzerinde olaylarını işlemek istiyorsanız

Ayrıca bkz

Engellemeyenhttp://en.wikipedia.org/wiki/Event_loop ki ilgilidir Tek bir iş parçacığı, bu olayları işlemek için kilitleme işlemlerini kullanamazsınız. İlk soket üzerinde bir engelleme okuması yaparsanız, ikinci bayttan ilk bayra kadar bayt gelene kadar okuyamazsınız. Bu çok iyi çalışmaz, çünkü hangi soketin ilk önce okunacak bayt olduğunu gerçekten bilemezsiniz. Bunun yerine hangi soket bayt olduğunu ve daha sonra engellemeden bu soketten onları okumak için select (yukarıda bağlı Vikipedi sayfasında daha ayrıntılı olarak açıklanmıştır) gibi bir şey kullanın.

Bu, tüm olay olaylarını, birbiri ardına sırayla, aynı anda hepsini işleme görünümünü vererek hizmet verebileceğiniz anlamına gelir.

+0

Doğru, ancak olay döngüsünde engelleme işlemi nasıl çalışıyor? –

+0

Engellemeyi engelleme ile karşılaştırmayı engelleyen biraz daha fazla metin ekledim. –