WriteFile( tmp_pipe,&Time,sizeof(double),&dwWritten,NULL );
以上是同步的,如果tmp_pipe缓冲区用完了,就会在那里等待。
如何立即完成上面的结果,如果缓冲区已满,可能只是忽略数据?
什么是Guid.NewGuid()的C ++版本?
如何杀死Windows 64位平台上的python 2.5进程?
pipe道batch file输出到Python脚本
如何在c ++中调用:: CreateProcess来启动Windows可执行文件?
有没有Java库来访问本机Windows API?
确定的方法是使用boost::asio 。
如果你不使用一个好的库,异步IO是非常难以正确和便携的。
如果你不需要可移植的代码,那么直接使用Win32就可以了。
如果将OVERLAPPED结构的地址指定为最终参数,那么稍后将通过OVERLAPPED结构获取有关异步写入的信息。 您需要以重叠模式打开文件。 或者,您可以使用WriteFileEx并提供完成回调。 阅读MSDN文档以获取更多详细信息。
请注意,您仍然必须明智地处理管道上的I / O未完成的情况。 忽略管道有限带宽的事实,没有办法只做“即丢即忘”的写入。 最终你会遇到一些内核缓冲池的限制,一个I / O将会失败,可能会破坏你的管道,直到它重新启动。
这是很难得到正确的,但有大量的样本在线帮助。 要获得额外的功劳,请使用I / O完成端口,为用户模式Windows上的异步I / O提供最高性能。 不是100%确定这适用于管道,但肯定是套接字和文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。