在什么情况下使用阻塞网络 I/O?

发布于 2025-01-07 03:35:29 字数 61 浏览 1 评论 0原文

我读过一些lib,如libev,它们都使用非阻塞io来处理网络通信。但是,什么情况下在网络中使用阻塞io呢?

I have read some lib as libev, all of them use the non-blocking io to handle the network communication. However, in which case the blocking io is used in networking?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七秒鱼° 2025-01-14 03:35:29

对于简单程序(例如测试实用程序或专用客户端)或使用专用线程时。

在第一种情况下,涉及非阻塞 I/O 的额外逻辑是没有意义的,而在第二种情况下,该逻辑被涉及多个线程的逻辑所取代,其中使用阻塞 I/O 的线程本质上模拟了一个专用客户端(或服务器),这是以线程和同步的额外资源为代价完成的,但通常是合理的,特别是当无论如何都需要多个线程或线程在资源方面便宜时。

非阻塞 I/O 通常用于库和其他出于资源、可测试性或可移植性问题而无法证明使用专用线程的情况。它通常归结为个人口味。差异通常在于风格问题。

For simple programs (e.g. test utility or dedicated client) or when dedicated threads are used.

In the first case there is no point in the extra logic involved with non-blocking I/O, while in the second case the logic is replaced with the logic involving multiple threads where the thread using blocking I/O essentially simulated a dedicated client (or server), this is done at the cost of additional resources for threads and synchronisation, but is often justified, especially when multiple threads are necessary anyway or where threads are cheap in terms of resources.

Non blocking I/O is often used in libraries and other cases where using dedicated threads cannot be justified, for resource, testability or portability concerns. It often boils down to individual taste. The difference often being a matter of style.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文