2010-12-10 24 views
2

即使您在Linux或Windows上發出多個並行異步DNS解析請求(以編程方式),操作系統是否會序列化這些請求並且不會並行發送它們?客戶端操作系統上的DNS查詢是否已係列化?

正如我在說的gethostbyname或DnsResolve API是在最底層的序列化的地方閱讀,甚至有人寫這個異步的DNS python庫來dramaticcally加快DNS解析

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

所以心不是有什麼。 NET API還是一般情況下,它可以按照我的程序提供的請求數量並行工作?

想象一下,在一些早期的網絡爬蟲出版物中,我需要每秒很多dns查詢的網絡爬行場景,但有人提到dns會成爲瓶頸。

+0

我ch嚥了。它似乎確實序列化.... – BarsMonster 2010-12-10 09:32:40

+0

是的。我需要一個並行庫c# – 2010-12-27 12:06:12

回答

1

在Linux下,gethostbyname()將被有效地序列化,這不僅僅是因爲它實際上並沒有返回給調用者,直到它有答案。然而,這只是到了圖書館的實施,這不是做這件事的O/S。

還有很多其他庫可以替代執行完全異步解析的gethostbyname,允許一次執行多個查詢。一個特別好的此類庫是libunbound,它是Unbound遞歸DNS服務器分發的一部分。

+0

是否有任何異步庫適用於Windows上的.NET? – 2010-12-11 13:26:24

相關問題