最近由于我正在处理的c ++项目,我遇到了C ++中非阻塞I / O的概念。 如果有人需要跨平台解决方案,是否可以在不使用boost.asio,libuv和任何相关外部库的情况下实现非阻塞模式?一个例子对于区分阻塞和非阻塞I / O之间的区别非常有帮助。
答案 0 :(得分:0)
I / O--在任何计算意义上 - 需要时间。使用此时间取决于I / O操作是否为“阻塞”。或"非阻塞"。
非阻塞I / O发生在调用线程之外。这通常意味着忙碌的等待"来自I / O的信号告诉你有数据。
阻止I / O操作将暂停执行调用线程,直到操作完成。
对于网络套接字:
对于文件:
类似于网络套接字的情况,只有您正在从硬件设备读取,因此它可能会更快。
对于多线程,它是一个恶毒的野兽。根据经验,它不应该在你的C ++术语词汇中,除非你绝对需要它。