何が最epoll/kqueue/選択equvalient Windows?
-
09-06-2019 - |
質問
何をされることがありますので、あらベストI/Oイベント通知すか?
より良いものに---
- な制限番号の入力ファイル記述子
- すべてのファイル(ディスクファイル、ソケット、...)
- 各種届出モード、エレガントかつ機能的なバッグが限定発)
解決
Windowsでは、非同期操作によるファイル操作によらない記述子.する方法は幾つかあるが、今回は待ちにファイル操作を完全非同期.
例えば、知りたい場合のデータを取り除くことができますネットワークソケット、非同期読み取請求のソケット、完成時には、データや成果物を得ることができた。
にWin32,非事業用に OVERLAPPED
構造を含むにつ優れたIO動作します。
- 准教授のファイル IOポート完了 派遣非同期IOいます。時の操作が完了すので、それが完了メッセージのキューのある労働者のスレッド(s)が待機すると取得しています。掛けることもできますがユーザー定義のメッセージをキューに挿入します制限はありませんどのように多数のファイルまたは送信待ちメッセージで使用できる完了ポート
- 派遣各IO作用のイベントです。イベントに関連する動作となるシグナル(満足する)ときが完了します。使用
WaitForMultipleObjects
待ちにすべてのイベントです。この点についてみることにMAXIMUM_WAIT_OBJECTS
オブジェクトの整列度(64).でもお待ちその他の種類のイベントが同時にプロセス/スレッドが終了、ミューテックス-イベント、セマフォ) - を使用 スレッドプール.スレッドのプールできる無制限数オブジェクトのファイル操作を待機および実行 ユーザー定義の関数 完了します。
- 使用
ReadFileEx
やWriteFileEx
キュー 非同期の手順電話 (APCs)の呼び出し側スレッドとSleepEx
(WaitFor{Single|Multiple}ObjectsEx
)Alertable TRUE
への通知メッセージごとの操作きが完了します。この方法では、IO完了ポートが作品の一つ。
Windows NTカーネルとの間のソケット、ディスクファイル、パイプ等ファイル操作を内部:すべてのこれらのオプションに働くすべてのファイルの種類です。
他のヒント
libuv
libuv
ビevented I/OのためのUnixとWindowsでは、支援のためのソケットファイルをやる事に成功しました。で、プラットフォームは層Node.js.
なつからないと私は気が付いている。友達の皆さんと、オープンソースのWindows epoll実装(下記リンク)それだけでなく、走行に問題を把握してくれてい法と同じLinuxの実装です。
現在の問題点:
- Linuxでは、controlelrディレクトリにて、ファイル記述子とソケット記述子の互換性がありますが、Windowsでいます。の両方に対応していることが必要となるepollの実装です。
- Windowsでもトリッキーをカーネルイベン---ウepoll作品プログラムを利用しています。.まだ推測するプログラムを用いてクロスプラットフォームepoll図書館で実行が著しく遅Windows以上のプログラムを利用しています。.
私に戻っと更新の募し進する。
select()関数はPOSIX可能なwindowsを含む"winsock.h"または"winsock2.h".
所属していません StackOverflow