2010-12-10 70 views
2

Même si vous lancez plusieurs requêtes de résolution DNS asynchrone parallèle (par programme) sous Linux ou Windows, le système d'exploitation sérialise-t-il les demandes et ne les envoie pas toutes en parallèle?La requête DNS sur le système d'exploitation client est-elle sérilisée?

Comme je l'ai lu dans des endroits que gethostbyname ou API dnsResolve sont sérialisés dans la plus basse couche, même quelqu'un a écrit ce async-dns bibliothèque Python pour accélérer dramaticcally des résolutions DNS

http://www.catonmat.net/blog/asynchronous-dns-resolution

Alors isnt-il. NET API ou en général où il peut fonctionner parallèlement selon le nombre de demandes données par mon programme? Imaginez un scénario de webcrawl où j'aurais besoin de beaucoup de requêtes DNS par seconde, dans certaines premières publications d'analyse Web, il est mentionné que DNS devient un goulot d'étranglement.

+0

Je suis étouffé. Il est apparu en effet sérialisé .... – BarsMonster

+0

oui. J'ai besoin d'une bibliothèque parallèle pour C# –

Répondre

1

Sous Linux, gethostbyname() sera effectivement sérialisé, en particulier parce qu'il ne retourne pas réellement à l'appelant jusqu'à ce qu'il ait une réponse. Cependant, il ne s'agit que de l'implémentation de la bibliothèque, ce n'est pas le système d'exploitation qui le fait.

Il y a beaucoup d'autres bibliothèques qui peuvent remplacer gethostbyname qui n'effectuer une résolution complètement asynchrone, ce qui permet de multiples requêtes pour être en cours à la fois. Une bibliothèque particulièrement bonne est libunbound, qui fait partie de la distribution de serveur DNS récursive Unbound.

+0

Y at-il une bibliothèque asynchrone adaptée à .NET sur Windows? –