iocp相关内容

I/O完成端口的优缺点

为什么很多人说 I/O 完成端口是又快又好的模型? I/O完成端口的优缺点是什么? 我想知道一些使 IOCP 比其他模型更快的点. 如果能对比其他模型(select、epoll、传统多线程/进程)解释一下就更好了. 解决方案 I/O 完成端口很棒.没有比这更好的词来形容它们了.如果 Windows 中的任何事情都做对了,那就是完成端口. 您可以创建一定数量的线程(实际上 ..
发布时间:2022-01-19 15:50:53 其他开发

I/O 完成端口的优缺点

为什么很多人说 I/O 完成端口是快速和漂亮的模型? I/O 完成端口的优缺点是什么? 我想知道一些比其他模型更快的 IOCP. 如果能和其他模型(select、epoll、传统的多线程/进程)进行对比说明就更好了. 解决方案 I/O 完成端口很棒.没有更好的词来形容它们.如果 Windows 中的任何事情都做得对,那就是完成端口. 您可以创建一定数量的线程(实际上并不 ..
发布时间:2022-01-04 08:20:56 其他开发

Linux 和 I/O 完成端口?

使用 winsock,您可以配置套接字或单独的 I/O 操作以“重叠".这意味着执行 I/O 的调用会立即返回,而实际操作则由单独的工作线程异步完成. Winsock 还提供“完成端口".据我了解,完成端口充当句柄(套接字)的多路复用器.如果句柄不在 I/O 操作的中间,即如果它的所有 I/O 操作都完成,则可以对其进行多路分解. 那么,关于我的问题……linux 是否支持套接字的完成 ..
发布时间:2021-12-11 11:11:53 服务器开发

一个 IOCP 文档解释问题 - 缓冲区所有权歧义

因为我的母语不是英语,所以我可能会遗漏一些东西,所以也许这里有人比我更了解. 取自 WSASendMSDN 上的注释: lpBuffers [in] 指向 WSABUF 数组的指针结构.每个 WSABUF 结构包含一个指向缓冲区的指针和缓冲区的长度,以字节为单位.为一个Winsock 应用程序,一旦 WSASend函数被调用,系统拥有这些缓冲区和应用程序可能不访问它们.这个数组必 ..
发布时间:2021-09-27 19:51:55 其他开发

重叠 I/O:如何在完成端口事件或正常事件上唤醒线程?

我想使用线程池来启动/取消重叠读取操作——分别使用 ReadFile() 和 CancelIo() —— 以及处理任何读取操作完成时的完成端口事件. 任何线程都可以发起读操作 任何线程都可以处理读取完成事件 只有发起读取的线程可以取消它(这是一个 CancelIo() 限制) 我不确定如何实现这一点.通常调用 GetQueuedCompletionStatus() 等待完成端口事件 ..
发布时间:2021-09-26 19:11:55 其他开发

更改/更新 CompletionKey

ULONG_PTR CKey = 2;CreateIoCompletionPort(...Ckey...); 在调用该函数后是否可以以某种方式更改/更新 CompletionKey?此外,同时发生在 serverock 和 clientsock 上的操作(例如,接受和接收模式下的 AcceptEx)仅返回服务器的完成,我可以将其更改为客户端还是更好地更改为两者? 解决方案 在我之 ..
发布时间:2021-09-25 20:50:59 其他开发

“取消关联"来自完成端口的套接字

CreateIoCompletionPort() 用于将套接字与完成端口相关联.但是,当这个套接字关闭时,我需要从完成端口“取消关联"它.我该怎么做? 解决方案 与 I/O 完成端口关联的句柄在关闭句柄时从端口中删除.在网络套接字的情况下,通过调用 closesocket(). CreateIoCompletionPort 的文档包含对资源的说明处理: FileHandle 参 ..
发布时间:2021-09-25 18:54:55 C/C++开发

.NET 4.5 服务器端 WebSocket 是否使用 IOCP?

有谁知道 AspNetWebSocket(在 .NET Framework 4.5 中引入)是否利用 IOCP 来处理请求而不是每个连接一个线程? 解决方案 有一种相对简单的方法可以让您自己解决这个问题. 创建一个简单的程序. 使用任务监视器观察它并查看线程数. 创建大量的网络套接字连接到它. 查看线程数是否在连接处于活动状态时增加. 比较连接数和线程数. 但是,这又有 ..
发布时间:2021-09-24 19:50:40 C#/.NET

Node.js 是否可以在 Windows 上进行生产?

在新的 0.5.1 分支中,有一个 Node.js 的官方 Windows 可执行文件.Node.js 的 Linux 版本使用已建立的库,例如 v8、libev、libeio. 因为 libev 和 libeio 适用于 *NIX 平台;Node.js 的 Windows 端口是否已准备好用于生产用途,还是仅用于开发? 解决方案 0.5.x 分支不稳定.甚至分支数量也很稳定,赔率也 ..
发布时间:2021-09-15 20:29:17 其他开发

支持重叠 I/O(用于 IOCP)的定时器?

我需要在基于 I/O 完成端口 (IOCP) 的应用程序中添加计时器支持.我想避免使用特定线程来管理计时器. 在 Linux 上,您可以创建一个通过文件描述符发送过期通知的计时器(请参阅 timerfd.h 手册),因此如果您的应用程序基于 epoll,那么将它与 epoll 一起使用是很好的. 在 Windows 上,您可以将“等待计时器"与异步过程调用 (ACP) 结合使用(请参阅 ..
发布时间:2021-09-07 20:19:20 其他开发

自定义线程池中的 IOCP

我目前正在 Internet 上搜索自定义线程池实现.我找到了一个使用 IOCP 的实现.我想知道使用它们有什么好处?他们是否提供窃取作品之类的东西,我真的可以找到答案... 解决方案 IOCP = "IO 完成端口".它是 Windows 操作系统中内置的内核对象,可为您提供管理多线程异步 IO 的智能方法. 用非常简单(有点过于简化)的术语来说,您将您想要完成的 IO 作业告诉 ..
发布时间:2021-09-07 18:35:03 其他开发

Windows 对每台机器同时打开的套接字/连接数的限制

假设我有一个带有一个真实网络接口和几个环回接口的 Windows 7.我有启用 IOCP 的服务器,它接受来自客户端的连接.我正在尝试尽可能多地模拟与服务器的真实客户端连接. 我的客户端代码只是建立了 X 个套接字连接(注意客户端绑定到给定的接口): const Int32 remotePort = 12345;const Int32 MaxSockets = 60000;Socket[ ..
发布时间:2021-06-07 19:26:09 其他开发

IOCP 多线程服务器和引用计数类

我在 IOCP 服务器上工作(重叠 I/O、4 个线程、CreateIoCompletionPort、GetQueuedCompletionStatus、WSASend 等).我的目标是向所有连接的套接字发送单个引用计数缓冲区.(我从这篇文章中遵循了 Len Holgate 的建议 WSA 发送到多线程 iocp 服务器中所有连接的套接字).向所有连接的客户端发送缓冲区后,应将其删除. 这是 ..
发布时间:2021-06-04 20:30:52 其他开发

Windows 2012 R2 closesocket()挂在侦听套接字上

我在生产服务器上的情况很奇怪. 我们有一个使用C ++编写的网络应用程序,该应用程序通过使用IOCP编写的TCP来满足用户请求. 两天前,我们对Windows 2012 R2进行了更新(它安装了最新的安全更新.以前的更新是6个月前).更新之后,当尝试停止服务时,我们在日志中看到服务器挂起以关闭监听套接字 closesocket(session-> listen_socket); ..
发布时间:2021-04-19 19:27:25 C/C++开发

IO完成端口密钥混乱

我正在编写基于IO完成端口的服务器(此处的源代码),并使用ctypes模块在Python中使用Windows DLL API。但这是API的直接用法,这个问题是针对那些了解IOCP的人,而不是Python。 据我所知,CreateIoCompletionPort文档是,当您使用文件句柄(在本例中为套接字)调用此函数时,您将指定“用户定义”完成键,您将其与创建的IOCP关联。当您遍历调用Get ..
发布时间:2020-10-12 22:57:48 Python

在Windows上学习IOCP的资源

我最近在Windows上意识到了这个叫做IOCP的东西,我开始寻找有关它的更多信息,但是我找不到最新的信息(大多数示例都在将近5年的codeproject上)了许多指南或教程.任何人都可以通过在线教程或示例项目(您编写并可以共享或其他开源项目)或有关它的书的形式来推荐有关它的任何最新资源,因为如果它听起来不错,我计划使用它广泛,所以我会投资. 谢谢. 解决方案 IOCP是从黑暗时代开 ..
发布时间:2020-07-23 18:44:08 其他开发

等待IO的可重用测试代码

我正在尝试在WCF公开的方法/服务上使用async/await.一切正常,但我想模拟实际等待IO的服务方法,以便将服务调用注册到IO完成端口,并将线程放回线程池中. 为澄清起见,我只是在尝试确认IO完成端口的使用,并更好地了解实际情况. 例如我的测试服务当前如下所示: [ServiceContract] public interface IHelloWorldService { ..
发布时间:2020-06-21 19:19:33 C#/.NET