sql >> Databasteknik >  >> NoSQL >> Redis

Vilka är de underliggande skillnaderna mellan select, epoll, kqueue och evport?

I allmänhet har alla Async I/O-undersystem olika interna delar, men i aktuellt specifika fall används dessa konkreta Async I/O-libs för att stödja så många plattformar som möjligt. Det vill säga:

  • evport =Solaris 10
  • epoll =Linux
  • kqueue =OS X, FreeBSD
  • välj =vanligtvis installerat på alla plattformar som en fallback

Evport , Epoll och KQueue har O(1) komplexitet för deskriptorurvalsalgoritm, och de använder alla interna kärnutrymmesminnesstrukturer. De kan också tjäna massor (hundratusentals) filbeskrivningar.

Bortsett från de andra, select kan bara visa upp till 1024 deskriptorer och gör en fullständig genomsökning av deskriptorer (så varje gång den itererar alla deskriptorer för att välja en att arbeta med), så komplexiteten är O(n) .




  1. Mongodb:Det gick inte att ansluta till 127.0.0.1:27017, anledning:errno:10061

  2. 6 bästa metoder för att distribuera MongoDB på Amazon EC2

  3. Samlingsobjektet är inte anropsbart fel med PyMongo

  4. Använda lagrade JavaScript-funktioner i Aggregation pipeline, MapReduce eller runCommand