io-completion-ports

    1热度

    2回答

    今天笔者了解到,我可以打电话CreateIoCompletionPort(),然后通过返回HANDLE到WaitForSingleObject(): #include <Windows.h> int main() { HANDLE h = CreateIoCompletionPort(INVALID_HANDLE_VALUE, nullptr, 0, 0); auto b

    0热度

    1回答

    我有我自己的重叠结构异步IO使用IO完成端口。 现在我得到读/写完成通知。我可以传递一个CALLBACK函数作为重叠结构中的参数吗? 这将让我指定根据我经过 重叠结构的不同类型的回调函数有没有人有任何这方面的运气?

    1热度

    2回答

    我的问题:我的Completionport服务器将接收来自不同客户端的未知大小的数据,问题是,我不知道如何避免缓冲区溢出/如何避免我的(接收)缓冲区被数据“溢出”。 现在到Quesitons: 1)如果我通过WSARecv进行接收呼叫,工作线程是否像回调函数一样工作?我的意思是,它只在完成接收呼叫后才发现接收呼叫,或者在接收时发现接收呼叫? lpNumberOfBytes(来自GetQueuedC

    6热度

    1回答

    我正在为我的分布式系统编写一个消息层。我正在使用IOCP,即Socket.XXXAsync方法。 (其实,我的接收功能是基于他)我在做什么这里的东西很接近: http://vadmyst.blogspot.com/2008/05/sample-code-for-tcp-server-using.html 我现在发现的是,在节目的开始(二测试服务器彼此交谈)我每次获得一些SAEA对象,其中.Buff

    1热度

    1回答

    我有这样的代码基本上使用IO完成端口写入文件5次。正如你猜测的那样,它不能很好地工作。问题是,我希望将“你好”写入文件5次,但最终总是只写一个“你好”。我很困惑,因为程序打印“写了5个字节”5次,所以我认为写入完成了。 任何人都可以看到这个问题吗? #include <windows.h> #include <stdio.h> #define IOCP_NOMORE 3 #define I

    3热度

    1回答

    我们在Windows 2008上遇到了默认选择反应堆的问题。还有一种替代反应堆,即iocpreactor,它看起来像是Windows的理想解决方案。它在文档中被列为实验性的,并且“接近准备好”。 这是什么意思?到目前为止,我们已经测试它没有问题。它在一般用途吗?任何人都可以推荐它吗?

    0热度

    1回答

    我想要做的就是休耕: 所以我有4个主题。并为每个线程创建一个IOCP。 内线程函数我等待GetQueuedCompletionStatus(INIFINIT) 得到一份工作,然后处理它,然后再等待。 所以,如果我想提交一个工作到一个特定的线程,我只是PostQueuedCompletionStatus其IOCP。 但我想要的是有一个主IOCP和内线程func。我GetQueuedCompletio

    1热度

    1回答

    我试图侦听来自各种传入端口(〜20)的UDP数据包。我想专用3-5个线程来接收和处理这些数据包。这对于Windows中的IO完成端口来说似乎是理想的情况。我不明白的是如何执行多个到更少映射的多个套接字来检查一组较小的线程。 以下代码创建所有套接字并开始异步接收操作。 for(int ix = 0; ix < 20; ix++) { var socket = new Socket(Add

    1热度

    1回答

    我需要将从另一个进程发送给我的对象写入到我的磁盘上的多个文件。 每个对象都带有fileID(要写入的文件的名称)和数据块。 我想使用IO完成端口(IOCP)来优化文件写入,使用并发异步I/O,但我必须同步写入每个文件,例如,在写入磁盘时,我必须保持每个文件的大块顺序,但不要按文件顺序排列。 我知道使用IOCP,每当它执行IO操作时,.Net如何使其按照我想要的方式工作?

    0热度

    1回答

    我正在开发一个程序,需要将大量数据写入磁盘,然后稍后回读少量数据。它需要将相关的数据“分类”在一起,然后一旦找出如何处理它,那么它可以进一步处理数据。它基本上就像一个数据库,但在磁盘上有临时文件。临时文件的部分被相当频繁地重用,因为我在读取它之后并不关心磁盘上的数据,因此文件的一部分可以被回收。我使用I/O完成端口来实现这一点,因为顺序I/O太慢了。 问题是,有时当我读取数据时,我并没有全部收回。