问题标签 [iocp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
threadpool - 自定义线程池中的 IOCP
我目前正在互联网上搜索自定义线程池实现。我找到了一个使用 IOCP 的实现。我想知道使用它们有什么好处?他们是否提供工作窃取或类似的东西,我真的可以找到答案......
c++ - IOCP,跨平台库?
我最近在 windows 平台上遇到了一个叫做 IOCP 的东西,更准确地说:输入/输出控制端口。当服务器软件需要同时容纳数千名用户时,这似乎是编写服务器软件的最有效方式。(如果我错了,请纠正我,但是每个套接字的线程、轮询和异步回调(每个回调上的线程)都不够有效。)
我想知道是否有任何 3rd 方库可以实现这个概念。我知道 win32 api 为我们提供了 CreateIoCompletionPort,FreeBSD 有 kqueue,而 linux 通常可以使用 /dev/epoll,它们的工作方式有点相似......但是没有一个跨平台库(比如 boost::thread)来处理这些东西为了我?
c# - Mono 和 C# IOCP:这是个好主意吗?
我正在将一个 c++ 应用程序移植到在其服务器上使用 IOCP 的 c#。
单声道可以像处理窗口一样处理 IOCP 吗?我会获得与 c++ 相当的性能还是我应该尝试其他方法?
谢谢
windows - 通过 IOCP 进行串行通信
是否可以将 IO 完成端口用于串行 I/O?根据 Windows 通过 C/C++ 暗示这是可能的,并且确实给出了一个使用 IOCP 和物理文件的示例,显示与 CreateFile、ReadFile、WriteFile 等一起使用。但是这实际上可以与串行通信一起使用吗?它工作吗?
我在网上找不到任何这样的例子,但我不能成为第一个尝试它的人吗?
iocp - I/O 完成端口,如何释放每个套接字上下文和每个 I/O 上下文?
我在 UDP 套接字上使用 IOCP,UDP 套接字可能在另一个线程中关闭。那么,如何安全地释放与 SOCKET 关联的 Per Socket Context 和 Per I/O Context 呢?
当我关闭套接字时,内核队列中仍然会有未完成的 I/O 请求。
如果我在套接字关闭时释放上下文,则 GetQueueCompletionStatus 可能会失败。
现在,我的问题是何时释放上下文?
multithreading - 关于 IOCP 的问题
如果我想使用完成端口从不同的线程获取信息,
我该如何设计程序的结构?下面的那个怎么样?
如果我想使用全局函数,如何设置互斥锁?
c++ - 关于windows iocp的一个问题
当我在 Windows Vista 中编写有关 IO 完成端口的程序时,第一个示例不起作用,GetQueuedCompletionStatus() 无法获取任何 OVERLAPPED 结构。
所以我把 OVERLAPPED 结构放在全局范围内,它的效果非常好。这是为什么?
代码1:
代码2:
c++ - 这个程序是异步运行还是同步运行?
当我运行这个程序
似乎 WriteFile 直到写入工作完成才返回。同时,调用 GetQueuedCompletionStatus()。该行为类似于同步 IO 操作,而不是异步 IO 操作。
这是为什么?
windows - 重叠 I/O:如何在完成端口事件或正常事件上唤醒线程?
我想使用线程池来启动/取消重叠的读取操作——分别使用ReadFile()
和CancelIo()
——以及在读取操作完成时处理任何完成端口事件。
- 任何线程都可以发起读操作
- 任何线程都可以处理读取完成事件
- 只有发起读取的线程可以取消它(这是一个
CancelIo()
限制)
我不确定如何实现这一点。通常调用GetQueuedCompletionStatus()
等待完成端口事件和WaitForSingleObject()
等待正常事件,但不清楚如何混合两者。如果PostQueuedCompletionStatus()
让我指定要唤醒的特定线程,我会被设置。有任何想法吗?
更新:该解决方案必须在 Windows XP 上运行。不幸的是,这排除了使用CancelIoEx()
or GetQueuedCompletionStatusEx()
。
delphi - 使用winsock2和IOCP替换Delphi TClientSocket?
有这样的事吗?它需要是异步的(没有 Indy)。