当前位置:  开发笔记 > 编程语言 > 正文

stdin/stdout/stderr上的跨平台(linux/Win32)非阻塞C++ IO

如何解决《stdin/stdout/stderr上的跨平台(linux/Win32)非阻塞C++IO》经验,为你挑选了1个好方法。

我试图通过stdin/stdout找到非阻塞IO的最佳解决方案,具有以下特征:

只要有足够的数据,就可以读入n- size的块.

如果没有足够的数据,请读取部分块.

如果没有可用数据,则阻塞直到有一些数据(即使它可能小于n).

目标是允许有效传输大型数据集,同时立即处理"控制"代码(而不是让它们在某处部分填充的缓冲区中逗留).

我知道我可以通过使用线程和istream :: get()循环,或者通过编写一堆特定于平台的代码来实现这一点(因为你不能在windows中的文件句柄上选择())......((那里也是istream :: readsome()看起来很有希望,但我在谷歌上找到的唯一结果是人们说它实际上并不好用.))

由于我没有对这些API做过多编码,也许有更好的方法.



1> activout.se..:

也许boost :: asio对你有用吗?

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有