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太慢了。 問題是,有時當我讀取數據時,我並沒有全部收回。