SORU
9 HAZİRAN 2009, Salı


Arasındaki farklar anket ve seçmek nedir?

POSIX standardı select poll sistem için C API çağrıları bahsediyorum.

CEVAP
17 EKİM 2010, Pazar


select() çağrı var oluşturduktan üç bitmasks işareti olan yuva ve dosya tanımlayıcıları istediğiniz izlemek için okuma, yazma ve hataları ve işletim sistemi markaları hangileri aslında vardı bir çeşit aktivite; poll() oluşturduğunuz bir liste tanımlayıcı Kimlikleri ve işletim sistemi izleri her biri iletürolay meydana geldi.

select() yöntemi hantal ve verimsiz değil.

  1. Genellikle binden fazla potansiyel dosya tanıtıcı bir süreç vardır. Eğer bir uzun süren işlem sadece bir kaç tanımlayıcıları açık, ama en azından onlardan biri oldu atanan bir yüksek sayı, daha sonra bit maskesi geçti select() olmalı yeterince büyük kapasitelidir en yüksek tanımlayıcı — tüm aralıkları yüzlerce bit olacak Geri Al bu işletim sistemi için döngü boyunca her select() arama keşfetmek onlar geri al.

  2. select() döndüğünde, arayan her üç bitmasks üzerinde döngü gerçekleşti belirlemek için vardır. Çok tipik uygulamalar sadece bir veya iki dosya tanımlayıcıları her an yeni trafik alacak, henüz üç bitmasks sonuna kadar tüm yol bu bulmak için okumak gerekir.

  3. İşletim sistemi bitmasks yeniden yazarak etkinlik hakkında sinyaller nedeniyle, harap ve artık dinlemek istediğiniz dosya tanımlayıcıları listesi ile işaretlenmiştir. Olmanı da yeniden bütün bit maskesi için başka bir liste tut, bellek, ya da tutmak zorundasın kopyası her bir bit Maskesi ve memcpy() Blok veri üzerinden tepesinde harap bitmasks sonra her select() Ara.

poll() yaklaşım yeniden kullanarak aynı veri yapısı devam edebilirsiniz, çünkü çok daha iyi çalışıyor.

Aslında, poll() ilham kaynağı olan bir başka mekanizma, modern Linux çekirdekleri: epoll() hangi geliştirir daha da üzerine mekanizması için izin başka bir sıçrayışta ölçülebilirlik, bugün sunucular sık sık istemek kolu on binlerce kişi aynı anda bağlantı. Bu çaba için iyi bir giriş

http://scotdoyle.com/python-epoll-howto.html

Bu sırada bağlantı var bazı güzel grafikler gösteren faydaları epoll() (not select() bu açıdan değerlendirdiğimizde çok verimsiz ve eski moda bu değil, hatta bir çizgi üzerinde bu grafikler!):

http://lse.sourceforge.net/epoll/index.html


Güncelleme:Burada başka farklar hakkında daha fazla ayrıntı vermeyen Taşma soru, Yığın:

Caveats of select/poll vs. epoll reactors in Twisted

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bratayley

    Bratayley

    30 Aralık 2010
  • cekehechu

    cekehechu

    20 HAZİRAN 2006
  • MobileTechReview

    MobileTechRe

    6 HAZİRAN 2008