
[英]Reading named Pipe using overlapped/asynchronous i/o
我有一个来自服务的真正旧代码,该服务在消息模式 ( PIPE_TYPE_MESSAGE ) 中使用具有重叠 i/o ( FILE_FLAG_OVERLAPPED ) 的命名命名管道。 该代码执行以下操作: ReadFile用于 4 个字节,具有重叠的 i/o(标头 + 消息长度)。 客户端通过一 ...
[英]Reading named Pipe using overlapped/asynchronous i/o
我有一个来自服务的真正旧代码,该服务在消息模式 ( PIPE_TYPE_MESSAGE ) 中使用具有重叠 i/o ( FILE_FLAG_OVERLAPPED ) 的命名命名管道。 该代码执行以下操作: ReadFile用于 4 个字节,具有重叠的 i/o(标头 + 消息长度)。 客户端通过一 ...
[英]UDP server consuming high CPU
我在我的 UDP 服务器实现中观察到高 CPU 使用率,该实现运行一个无限循环,期望每毫秒有 15 个 1.5KB 数据包。 如下所示: 这个 udp 服务器的 CPU 消耗非常高,即使在接收后没有处理数据包。 这里如何提高cpu消耗? ...
[英]Race-free way to asynchronously start AND cancel I/O on another thread in Windows
背景:一般来说,如果我们想强制一个操作异步发生(避免阻塞主线程),使用FILE_FLAG_OVERLAPPED是不够的,因为操作仍然可以同步完成。 因此,假设为避免这种情况,我们将操作推迟到专用于 I/O 的工作线程。 这样可以避免阻塞主线程。 现在主线程可以使用CancelIoEx(HANDLE, ...
[英]Is it possible to recover an allocated OVERLAPPED structure used in a pending I/O operation?
假设您正在使用 I/O 完成端口执行异步操作(如ReadDirectoryChangesW )。 对于每次调用该函数,您分配一个OVERLAPPED结构(可能带有一些附加数据)以在 I/O 完成回调中使用。 然后在回调中,在使用OVERLAPPED结构后,您使用作为参数提供的指针释放内存。 现在让 ...
[英]WSAGetOverlappedResult doesn't return data from socket
这是我的代码,我想专注于对WSARecv和WSAGetOverlappedResult的调用: 当我运行程序时,它会侦听连接。 我与netcat连接。 连接后,它按预期打印“接受”。 它还会打印“Running GetOverlappedResult”,但即使我在 netcat 上写了很多乱码,“O ...
[英]When using WSASend in overlapped mode, when should I free the buffers?
我正在使用WSASend()通过 IOCP 发送一些数据。 我分配一个缓冲区并用要发送的数据填充它,然后创建一个指向我的缓冲区的WSABUF并将其传递给WSASend() 。 文档说: 如果此 function 以重叠方式完成,则 Winsock 服务提供者有责任在此调用返回之前捕获 WSABU ...
[英]Why is WriteFile not advancing the file offset for subsequent writes in this code?
我创建了一个重叠的 WriteFile 方案,其中一个线程填充环形缓冲区并推进头指针并调用 WriteFile,另一个线程监视来自 OVERLAPPED 写入的事件以推进尾指针。 逻辑按预期运行,但文件大小没有增加,它保持不变,只是从 position 0 覆盖。我通过将增量值写入写入文件的 me ...
[英]Overlapped.AsyncResult doesn't change even after operation completed successfully
为了与 HID 设备通信,我使用了 kernel32 中的一些函数。 代码是从 Microchip MLA 定制 HID 设备项目中借用的。 它使用阻塞方法。 我发现我可以使这些方法异步。 这是我尝试进行异步写入的方法://... internal const uint FILE_FLAG_OVE ...
[英]Using the timeout in GetOverlappedResultEx to simulate a wait with timeout?
当使用GetOverlapedResult获取重叠(即异步)I/O 操作的结果时,您可以要求GetOverlappdResult “等待” : 这里要注意的部分是GetOverlappedResult的最后一个参数: bWait : bWait 如果此参数为TRUE ,并且lpOver ...
[英]Why is C# PInvoke with serial port overlapped I/O sometimes giving me all zeros
我正在 C# 中制作一个简单的 RS-232 测试应用程序。 在遇到 .NET SerialPort问题后,我决定直接调用 Win32 API。 我正在使用重叠 I/O。 它有 70% 的时间都在工作,而其他时候入站数据没有写入缓冲区。 我的测试应用程序以这种方式打开 COM 端口: 注意重叠的标志 ...
[英]Can too many WSASend in short time be a problem?
我正在用IOCP制作一个简单的mmorpg服务器。 我实现了一个简单的移动功能,所以我测试了虚拟客户端(也是IOCP)。 只有少数客户连接时,一切正常。 在连接大约500~1000个客户端之后,一些虚拟客户端偶尔会读取奇怪的数据。 我检查了服务器按照我的预期发送数据,但是当读取它们的虚拟 ...
[英]overlapping output while reading from fifo: how to fix/avoid this?
我正在尝试聚合来自2个文件的数据,因此我决定通过单独的编写器进程将数据发送到命名的fifo,并启动单独的读取器进程来读取和处理聚合数据。 所有的读/写都是在ramdisk(/ dev / shm)上进行的,它大约100 GB左右。 这个工作文件和我确保写入fifo的每条数据行都小于512 ...
[英]Using and Overlapped Named Pipe in Python 3.7
我正在使用带有 Python 3.7 的 Windows,并且我正在尝试在 python 进程之间异步共享数据,任何字符串。 其中一个无限期运行(接收方),另一个可能在任何时候开始发送一些数据然后结束(发送方)。 我正在尝试为此使用命名管道。 当它们同步运行时,我设法得到了这个(接收器在阻塞的管道 ...
[英]Resume completion port notification after they were stopped
在GetQueuedCompletionStatus的lpOverlapped参数的 MSDN 文档中,据说应用程序可以通过设置OVERLAPPED结构的hEvent成员的低位来阻止完成端口通知。 但是是否可以在停止通知后恢复通知? 我需要使用它来监视网络文件夹的更改: 当GetQueuedCo ...
[英]Asynchronous File I/O via POSIX AIO or Windows Overlapped IO in Java
.NET和.NET Core中的System.IO.File具有Read...Async()方法系列,所有方法都返回Task<byte[]>或Task<string> ( Task<T>是.NET等效于Java的 Future<T> )。 这 ...
[英]Windows socket completion routine callback after closesocket
当忙于以重叠模式使用Windows套接字并使用完成例程(因此没有IOCP)获取反馈时,我发现了以下奇怪的情况: 使用listen和AcceptEx打开服务器套接字。 使用ConnectEx在该端口上连接客户端套接字 现在,我们(至少)有3个套接字:1个列出套接字,一个客 ...
[英](MSDN)Make thread “alertable” constantly without blocking the thread
我正在使用异步过程调用(APC)使用ReadFileEx和WriteFileEx进行重叠的I / O请求。 如MSDN中所定义,仅当定义APC的线程处于“可更改”状态时,才处理这些函数的完成例程(APC)。 从例子在这里和那里都使用SleepEx()函数做,以保持线程警惕性SleepEx ...
[英]What is the purpose of WSA_WAIT_EVENT_0 in overlapped IO?
我在网络方面的所有经验都是在linux上进行的,因此我绝对是Windows联网的初学者。 这可能是一个愚蠢的问题,但我似乎在任何地方都找不到答案。 考虑以下代码片段: 从EventArray选择的事件每当WSA_WAIT_EVENT_0从指数中减去,但WSA_WAIT_EVENT_0 ...
[英]How do i convert this blocking i/o mode into an overlapped i/o mode in c language on windows?
我正在学习在Windows上的C语言中进行套接字编程和多线程编程。 我设计了一个项目,其中将有三种类型的备份节点(服务器,客户端和存储节点)。 我创建了以下文件,以拥有一台服务器以及多个客户端和存储节点。 服务器需要根据请求服务的客户端类型(是显式普通客户端或存储节点)创建两种线程。 我 ...
[英]Windows WriteFile blocks even with FILE_FLAG_OVERLAPPED
我有以下代码,该代码使用带有FILE_FLAG_OVERLAPPED标志的CreateFile创建文件,然后在循环中调用WriteFile 100次,并传入OVERLAPPED结构 打印以下输出 为什么WriteFile阻止? (如由证明g_blockedTime比显著更高g_ ...