56得票4回答
在Linux上真的没有异步块I/O吗?

考虑一个CPU繁忙但还具有高性能I/O要求的应用程序。 我正在比较Linux文件I/O和Windows,我看不出epoll如何帮助Linux程序。内核会告诉我文件描述符“准备好读取”,但我仍然需要调用阻塞的read()来获取数据,如果我要读取数兆字节,那么很明显会被阻塞。 在Windows...

19得票1回答
小的读取(重叠,缓冲)表现优于大块连续读取的原因解释?

(抱歉,开头有点长) 在开发一个应用程序时,该应用程序会将一个大文件(>400MB)预读入缓存以加快实际运行速度,我测试了每次读取4MB与每次读取1MB的速度差异是否明显。令人惊讶的是,较小的请求实际上更快。这似乎是违反直觉的,因此我进行了更广泛的测试。 在运行测试之前,缓存被清除了(只是...

15得票7回答
在其生命周期内,是否可以将已用于同步 I/O 的 HANDLE 更改为用于异步 I/O?

我日常在Windows编程中大部分工作都涉及各种I/O操作(管道,控制台,文件,套接字等)。我熟知从不同类型的句柄(同步,异步等待事件完成,等待文件句柄,I/O完成端口和可警报的I/O等)读取和写入的不同方法。我们使用其中许多方法。 对于我们的一些应用程序,只有一种处理所有句柄的方法将非常有...

15得票3回答
为什么称之为 Overlapped I/O?

我只能找到关于如何使用重叠I/O的教程,但我找不到为什么它被称为重叠I/O。 这是因为例如我可以从套接字中读取一些内容,然后在第一个读取返回读取的字节数之前读取其他内容吗?

9得票2回答
命名管道 - 异步查看

我需要找到一种方法,在异步模式下打开 System.IO.Pipe.NamedPipeServerStream 时,当它有更多可读数据时通知我 - WaitHandle 是理想的。我不能简单地使用 BeginRead() 来获取这样一个句柄,因为可能会被另一个想要写入管道的线程发出信号 - 所...

8得票1回答
使用重叠IO处理控制台输入?

我尝试使用重叠IO通过打开带有FILE_FLAG_OVERLAPPED标志的CONIN$从控制台读取输入。 然而,即使使用OVERLAPPED参数,ReadFile仍然会阻塞。 我已经阅读了一些帖子,报告这是Windows 7的一个bug。 我正在使用7,所以这可能是可能的。 这是我正在使...

8得票2回答
ConnectEx需要套接字“最初绑定”,但是绑定到什么?

ConnectEx函数需要一个“未连接的、先前绑定的套接字”。如果我在下面的示例中省略bind步骤,那么ConnectEx将失败并显示WSAEINVAL。 这是我的当前理解:在调用 ConnectEx 之前,绑定 套接字到 INADDR_ANY 和端口 0(除非已经绑定): struct ...