問題タブ [epoll]
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.
perl - Perl での Solaris /dev/poll のサポート
/dev/poll (Solaris の Linux epoll メソッドに相当するもの) を Perl で、モジュールを介して、またはアプリケーションで直接使用した経験のある人はいますか?
このテーマについて、Google で見つけられるものはあまりありません。
python - epoll と kqueue の間に大きなパフォーマンスの違いはありますか?
私の開発マシンは MacBook です (もちろん kqueue があります)。ただし、本番環境では Linux (もちろん epoll を使用) を実行しています。明らかに、コードのパフォーマンス特性を知るには、epoll を使用してコードを実行する必要があります。とはいえ、kqueue で見られるパフォーマンスは、epoll で見られるパフォーマンスの適切な近似値ですか? または、パフォーマンスが大幅に異なる可能性がある状況はありますか? ほとんどの場合、kqueue と epoll はパフォーマンスの点でかなり似ているように見えますが、私はあまり徹底的なテストを行っていません。
違いがある場合は、Python で tornado を使用しています。
c - 非ブロッキングソケットでのポーリングによる EWOULDBLOCK の適切な処理
私はしばらくの間、ポーリング TCP デーモンに取り組んできました。最近、ノンブロッキング ソケットが send() または recv() 中に EWOULDBLOCK エラーをスローすることがあるという記事を読みました。私の理解では、recv() が EWOULDBLOCK をスローする場合、これは (通常) 受け取るものが何もないことを意味します。しかし、私がはっきりしていないのは、どのような状況で send() が EWOULDBLOCK をスローするのか、そしてそのようなイベントを処理するための適切な手順は何でしょうか?
send() が EWOULDBLOCK をスローした場合、デーモンは単純にそのイベントから次のイベントに移動する必要がありますか? epoll のようなポーリング インターフェイスを使用すると、記述子が書き込み可能になったときに新しいイベントが発生しますか?
linux - kqueue/kevent で epoll_wait をエミュレートする方法はありますか?
kevents を作成した一連のファイル記述子のリストがあり、読み取りまたは書き込みアクセスの準備ができているそれらの数を取得する方法があるかどうかを調べようとしています。
epoll_wait が提供するような、「準備が整った」ファイル記述子のリストを取得する方法はありますか?
c - epollを使用したマルチスレッドUDPサーバー?
C/Linux でマルチスレッド UDP サーバーを開発したいと考えています。サービスは単一のポート x で実行されているため、単一の UDP ソケットをバインドする可能性しかありません。高負荷の下で動作するために、n 個のスレッド (静的に定義)、たとえば CPU ごとに 1 つのスレッドがあります。epoll_wait を使用して作業をスレッドに配信できるため、スレッドは必要に応じて 'EPOLLET | エポロンショット」。コード例を添付しました:
これは epoll でこのシナリオを処理する適切な方法ですか? 今回はソケットのイベントキューがブロックされているため、_handle_request_ 関数はできるだけ早く戻る必要がありますか?!
返信ありがとうございます。
linux - EPOLLETでepoll_selectを使用して複数のファイル記述子を読み取る方法は?
男エポール:
2つのfdsがあるとします。1つはパッシブで、データはたまにしか利用できません。2つ目はアクティブで、データはたまにしか利用できません。
epoll_waitは、両方を読み取ることができることを返しました。ループ内で{最初の}を読み取ります(データがまだ利用可能である間に突然ブロックされる可能性があるため、epoll_waitを呼び出さずに)。
これで、最初のファイル記述子が読み取り時にEAGAINを返しました。
何をすべきか?
- (epoll_waitを呼び出さずに)ループ内の2番目のfdを読み取り続けると、最初のfdでデータが使用可能になったことを見逃す可能性があります。EAGAINなしで読み取り、読み取り、読み取りを行います。
- 2番目のfdから読み取るたびにepoll_waitに「相談」すると、前の呼び出しから何も変更されていないため、epoll_waitが突然ブロックされる可能性があります(データは最初のFDでまだ利用できず、2番目のFDでも利用できます)。
最初のFDを忘れずに、2番目のFDの処理を続行するにはどうすればよいですか?
更新:もう1つ見つかりました:man epoll_wait:
これにより、イベントがない場合でもFDのイベントを列挙できます。
linux - select vs poll vs epoll
何千もの UDP 接続 (約 100,000 セッション) をサポートする必要がある新しいサーバーを設計しています。どちらを使用するかについての意見や提案はありますか?
asynchronous - epoll、poll、threadpool の違いは何ですか?
とスレッドプールの違いを誰か説明できepoll
ますか?poll
- 長所/短所は何ですか?
- フレームワークに関する提案はありますか?
- 簡単な/基本的なチュートリアルの提案はありますか?
- とは Linux 固有
epoll
のpoll
ようです... Windows 用の同等の代替手段はありますか?
linux - epoll と splice についての質問
私のアプリケーションはネットワーク経由で大量のデータを送信する予定なので、(Linux を使用しているため) epoll と splice を使用することにしました。これが私がそれをどのように見るかです(疑似コード):
私のアプリケーションは最大 2000 の TCP ソケットを開くと仮定します。次の 2 点についてお尋ねします。
- 非常に多くの epoll_ctl 呼び出しが発生しますが、非常に多くのソケットを使用すると遅くなりませんか?
- ファイル記述子は最初に読み取り可能になる必要があり、ソケットが書き込み可能になるまでにある程度の間隔があります。ソケットが書き込み可能になった時点で、ファイル記述子がまだ読み取り可能であることを確認できますか (呼び出しのブロックを回避するため)。
haskell - kqueueでのHaskellの並行性
並行アプリケーションを作成し、エラーを見つけました:
buildFdSets:ファイル記述子が範囲外です
私のFreeBSDでは、1つのプロセスでのファイル記述子の数に対するOSの制限であることがわかりました1024
。の限界ですselect()
。また、別のアプローチがあることも学びましたkqueue()
。
私の質問は次のとおりです。
- ファイル記述子の制限を勝ち取る方法は?
- haskellプログラム
kqueue()
の代わりに使用する方法は?select()