問題タブ [kqueue]
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.
macos - CUPS 印刷ジョブが完了したことと、そのジョブに関する情報を確認するにはどうすればよいですか?
Mac 印刷ジョブが作成/完了されるたびに、そのジョブに関する情報 (印刷されたもの、ページ、部数など) を知る必要があります。
これまでに思いついた最善の方法は、/var/spool/cups/ で kqueue() を使用し、作成された c##### ファイルを解析することですが、もっと良い方法があるかどうか疑問に思っています仕方。
sockets - kqueue を使用して例外的な条件をポーリングする
select() の使用を kqueue に置き換えるためにアプリを変更しています。select() を使用すると、例外的な条件をポーリングできます。
kqueueのドキュメントを読んだ後、それを行う方法はないようです。/の行に沿って and はありますが、何もEVFILT_READ
ありません。例外的な条件をポーリングすることは可能ですか?可能であれば、その方法は?EVFILT_WRITE
EVFILT_ERROR
EVFILT_EXCEPTIONAL
macos - Mac OS X でのファイル レベルのファイル システム変更通知
特定のディレクトリの下にあるファイルが (直接的または間接的に) 変更されたときにコードに通知されるようにします。「変更」とは、ファイルの内容が変更されたり、名前が変更されたり、削除されたりするたびにコードに通知することを意味します。または新しいファイルが追加された場合。私のアプリケーションでは、何千ものファイルが存在する可能性があります。
私は FSEvents のように見えましたが、その技術概要には次のように書かれています。
注目すべき重要なポイントは、通知の粒度がディレクトリ レベルであるということです。ディレクトリ内の何かが変更されたことだけが通知され、何が変更されたかは通知されません。
また、次のようにも述べています。
また、ファイル システム イベント API は、特定のファイルがいつ変更されたかを検出するようには設計されていません。このような目的には、kqueues メカニズムの方が適切です。
ただし、特定のファイルで kqueue を使用するには、ファイルを開いてファイル記述子を取得する必要があります。何千ものファイル記述子を管理するのは現実的ではありません (また、オープン ファイル記述子の最大許容数を超える可能性があります)。
不思議なことに、Windows ではこのReadDirectoryChangesW()
関数を使用できます。
では、Mac OS X で私が望むことをどのように行うことができるでしょうか? または、別の方法で尋ねられました:ReadDirectoryChangesW()
ユーザー空間で Mac OS X に相当するものを作成するにはどうすればよいでしょうか (非常に効率的に行います)。
posix - 「aioとepollをどのように併用するか」を再考する
での議論に続いて、単一のイベントループでAIOとepollをどのように一緒に使用しますか?。
実際、Linuxには2つの「aio」APIがあります。posIX aio(aio_ *ファミリーの関数)があります。これは、io_ *ファミリーであるRedHat(?)によって開発されたglibcとlibaioに含まれています。
1つ目は、aio_sigeventaiocbメンバーを介した通知要求の登録を許可します。これは、ppoll()/ pselect()イベントループと簡単に統合できます。POSIX aioをepoll()と統合する場合は、信号をダミーfd(パイプなど)のイベントに変換し、epollでリッスンする必要があります。その間、従来の方法またはppoll/で信号をキャッチします。選択する。最初の選択肢(通常のシグハンドラー)の安全性は、アプリケーションによって異なります。そして多分epollにありますが、私はその内部を完全には認識していません。私がepollベースのアプリを持っていて、POSIX aioサポートを追加したい場合、私は困惑していると安全に想定できますか?これが私の質問でした。
2番目のAIO実装であるlibaioは、実際にeventfd()で使用できます(ゼロであると予想されるaio_resfdメンバーまたはAIO結果を配信するeventfdを持つstruct iocb)。しかし、それは本によるものではありません。POSIX指定、つまり。
私は自分がすべてが明確な*BSDユーザーになることを夢見ています。AIOイベントに対するPOSIXAIOおよびkqueue()のサポートがあります。クリスタルクリア。他の多くのものと同じように。
select - select、epoll、または kqueue を使用して大きなファイルを提供する
Nginx は、複数のクライアントを処理するために epoll またはその他の多重化手法 (選択) を使用します。つまり、apache とは異なり、リクエストごとに新しいスレッドを生成しません。
selectを使用して、自分のテストプログラムで同じことを複製しようとしました。ノンブロッキング ソケットを作成し、select を使用してサービスを提供するクライアントを決定することで、複数のクライアントからの接続を受け入れることができました。私のプログラムは、単にデータをエコーバックするだけです。小さなデータ転送(クライアントごとに数バイト)では問題なく動作します。
この問題は、クライアントへの接続を介して大きなファイルを送信する必要があるときに発生します。ファイルの読み取りとソケットへの書き込みが完了するまで、すべてのクライアントにサービスを提供するスレッドが1つしかないため、他のクライアントのサービスを再開できません。
この問題に対する既知の解決策はありますか、それともそのようなリクエストごとにスレッドを作成するのが最善ですか?
iphone - kqueue()を使用してディレクトリの変更を監視する最適な方法は何ですか?
OK:iPhone OSアプリにファイル共有を実装しています。もちろん、これはファイルシステムの監視を意味します。わーい!
基本的に、OSは、ユーザーがiTunesのアプリのセクションにファイルを操作するときにアクセスできるディレクトリとの間でコピーおよび/または削除します。したがって、おそらくのような効率的なメカニズムを介して、ディレクトリの変更を監視する必要がありkqueue()
ます。
ファイルのコピーが完了したことを確認するために、これを実装するにはどうすればよいですか?私は次のように考えていました:
- で監視し
kqueue()
ます。 - イベント時に、タイムアウトを開始(または既存のリセット)します。
- タイムアウトが経過したら、作業を行います。
しかし、OSのつま先を踏み越えないようにするためのより良い方法はありますか?
objective-c - kqueueNOTE_EXITが機能しない
Appleのkqueueの使用例を使用しようとしていますが、プロセスの開始後にkqueueの監視を開始しない限り、コールバックは呼び出されません。しかし、プロセスの存続期間は短く、監視を開始する前または後にプロセスが開始された場合に機能するコードが必要です。
macos - 強制的に kevent をトリガーする
OS X でのソケット同期に kqueue を使用しています。次のような目的のイベントを登録できます。
問題は、このイベントを強制的にトリガーして、待機中の kevent 呼び出しが返されるようにする方法はありますか?
networking - kqueue を使用して、ソケットの反対側でのハングアップまたはソケットの例外的な状態を判断します
私は読んだことがありますが、ソケットのハングアップまたはソケットの例外的な状態について、またはman 2 kqueue
に登録せずに通知を受け取る方法がわかりませんでした。これとは別に、kqueue がソケットの例外的な状態を完全に通知する方法は完全には明らかではありません。EVFILT_READ
EVFILT_WRITE
事前にご回答いただきありがとうございます。
python - epoll と kqueue の間に大きなパフォーマンスの違いはありますか?
私の開発マシンは MacBook です (もちろん kqueue があります)。ただし、本番環境では Linux (もちろん epoll を使用) を実行しています。明らかに、コードのパフォーマンス特性を知るには、epoll を使用してコードを実行する必要があります。とはいえ、kqueue で見られるパフォーマンスは、epoll で見られるパフォーマンスの適切な近似値ですか? または、パフォーマンスが大幅に異なる可能性がある状況はありますか? ほとんどの場合、kqueue と epoll はパフォーマンスの点でかなり似ているように見えますが、私はあまり徹底的なテストを行っていません。
違いがある場合は、Python で tornado を使用しています。