libeioを Windowsに移植するには何が必要でしょうか?
1059 次
2 に答える
7
ほぼ1年後、あなたが調べたいと思うかもしれないもの (あなた、または検索やGoogleでこれを見つけた人) はlibuv、以前は liboio. 受け入れられた答えとは対照的に、Windowsがイベント化されたI/Oの概念を失っている、または当時はそうではなかったということではなく、深い知識のWindows APIの難解なサークルの外ではあまり知られていませんでした開発者。Windows スペースでは、同様の概念がI/O Completion Portsとして実装されているため、libeio のバージョン/ポート/フォーク/アナログでホイールを再実装する必要はあまりありません。内部で IOCP を使用していたものへの API。
于 2011-05-16T03:27:33.130 に答える
1
Libeio は、Windows の世界では知られていない unix API と unix の概念を使用しています。あなたが持っている解決策は次のとおりです。
- Windowsで UNIX 抽象化レイヤーを使用します: cygwinやWindows Services for Unixなど。しかし、これらのレイヤーがあっても、次のようなシステム依存のコードがたくさんあるため、libeio コードを実行するのは困難です。
# __FreeBSD__ の場合 || 定義済み __NetBSD__ || 定義された __OpenBSD__ # define _DIRENT_HAVE_D_TYPE /* ため息 */ # D_INO(de) を定義 (de)->d_fileno # D_NAMLEN(de) を定義 (de)->d_namlen # elif __linux || || 定義済みの d_ino || _XOPEN_SOURCE >= 600 # D_INO(de) を定義 (de)->d_ino # endif
- libeio をGTK+ (実際にはglib )、wxWidgetsまたはQtのような移植可能な抽象化ライブラリで書き直します。これらのフレームワークは、低レベルのルーチン、通信サービス、I/O チャネル、および非同期キュー用の強力な API を既に実装しています。これらのフレームワークの開発者は、コードの移植性を確保するために多大な努力を払ってきました。車輪を再発明する必要はありません。
確かに、libeio の唯一の C ファイルである eio.c のサイズが比較的小さいことを考えると、2 番目のソリューションが最適です。
于 2010-08-26T12:24:24.593 に答える