我已经阅读了一些lib作为libev,所有这些都使用非阻塞io来处理网络通信。但是,在这种情况下,阻止io用于网络?
答案 0 :(得分:1)
对于简单程序(例如测试实用程序或专用客户端)或使用专用线程时。
在第一种情况下,非阻塞I / O涉及额外逻辑没有意义,而在第二种情况下,逻辑被涉及多线程的逻辑替换,其中使用阻塞I / O的线程基本上模拟了专用客户端(或服务器),这是以牺牲线程和同步的额外资源为代价完成的,但通常是合理的,特别是当需要多个线程或线程在资源方面便宜时。
非阻塞I / O通常用于库和其他使用专用线程无法证明资源,可测试性或可移植性问题的情况。它通常归结为个人品味。差异往往是风格问题。