問題タブ [libevent]
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.
c - libeventでlibcurlを使用する
誰かが(コードを介して)acプログラムでlibeventとcurlを一緒に使用する方法を示したり説明したりできますか?CouchDBインスタンスにデータをアップロードする必要がある高性能のノンブロッキングデータモニターを作成しようとしています。私はlibeventとcurlの両方に精通していますが、curl_multiをlibeventとマージすると、何らかの理由で困惑します。公式のlibcurlの例のプログラムフローを理解していません-誰かが私にもっと簡単な例を指摘したり、提供したりできますか?
c++ - libeventを使用して継続的なhttpストリームを読み取り、ランダムな時間にデータを送信する
まず、私はまだC ++を学んでいると言う必要があると思います。これがやみくもに明白で単純な場合は、お詫びします。
httpストリームを消費するためにC++プログラムでlibeventライブラリを使用しようとしています(サンプルフォルダーのコードを調べてテストしました)。live.domain.comなどのURLに接続し、適切なヘッダーを送信し、返されたデータを読み取り、同じ接続を介してデータを送り返す方法の例を誰かが教えてくれるかどうか疑問に思っています... libeventがブロッキング接続を行うかどうかはわかりませんが、明示的に言うと、非ブロッキングサンプルを探しています。
なぜ私はこれをしようとしているのですか?
私は接続を開く必要があるAPIを使用しており、エラーが発生しない限り接続を維持します。同じ接続でIDの文字列を受信するまで、接続されているクライアントにステータステキストを定期的に送信します。その時点で、指定されたIDに関するデータの返送が開始されます...最初のリクエストが厳密に準拠した後、同じ接続を介してデータを返送するかどうかは完全にはわかりませんが、サーバーが期待していることなので、機能します...私はどのように知っていました
前もって感謝します
libevent - ユーザーが libevent でトリガーしたイベント
現在、libevent を使用してマルチスレッド アプリケーションを作成しています。
一部のイベントは IO によってトリガーされますが、event_active() を使用して、コード自体によってスレッド全体でトリガーされるイベントがいくつか必要です。
問題がどこにあるかを示す簡単なプログラムを作成しようとしました。
イベントは event_new() を使用して作成され、fd は -1 に設定されます。
event_add() を呼び出すときにタイムアウト構造体が使用されている場合、イベントは後で event_base_dispatch によって適切に処理されます。
代わりに event_add(ev, NULL) を使用すると、0 (明らかに成功) が返されますが、event_base_dispatch() は 1 を返します (これは、イベントが適切に登録されなかったことを意味します)。
この動作は、次のコードを使用して event_add 行を入れ替えてテストできます。
コンパイル: g++ sample.cc -levent
問題は、タイムアウトは必要なく、回避策として n 年タイムアウトを使用したくないということです。したがって、これがユーザー トリガー イベントの正しい使用方法でない場合は、その方法を知りたいと思います。
c - ファイルの削除/変更中のlibevent
libeventを使用してファイルの削除/更新を監視することは可能ですか?
/var/log/file.1が削除されたと仮定して、プログラムで報告したいと思います。これは可能ですか?はいの場合、どのように?
私のオペレーティングシステムはLinuxであり、いくつかのオペレーティングシステムのアクション中にメッセージを起動するデーモンを作成したいと思います。
詳細情報はどこにありますか?
c++ - libevent を使用したメンバー関数へのコールバック
コールバックとして扱われるべきメンバー関数をlibeventに渡そうとしています。
クラス A のeventcbへのメソッド ポインターを正常に作成し、それを A のインスタンス (行 20) で呼び出すことができます。
また、行 22 でグローバル関数を (C で行うように) 渡すことも正常に機能します。
ただし、行 23 で、メソッド ポインターをlibeventに渡そうとしました。これをコンパイルすると、( clangコンパイラーを使用して) 次のエラーが発生します。
私は何を間違っていますか?
c++ - Windows上のLibev
libevent
対を検討しlibev
ます。libev
ライブラリはWindowsでIOCPをネイティブにサポートしていますか?
c++ - libeventの付加価値
主にepoll
ファイル記述子のベースループが必要な場合、他にどのような機能がlibevent
提供されますhttp
かdns
?
epoll
非常に大きなプロジェクトであることは承知していますが、ラッパー APIを作成するのは非常に簡単に思えます。
c++ - libevent とファイル I/O
libevent
バッファリングされたファイル I/O を処理しますか? 私はそれがソケットをかなりうまく処理することを知っていますが、それは通常のファイルにも関係しますか、それとも「唯一の」epoll/...
ラッパーですか?
c++ - LIBEVENT を C++ としてリンクできません
これが機能しない理由、ファイルtest.c
:
次に:
gcc -o test.o -c test.c
正常に実行されますが、
リンク:
g++ -o test -levent test.o
プロデュース
したがって、 としてリンクすることはできませんC++
。これを解決するには?としてリンクし、としてC++
コンパイルする必要がありますC
。
c - libevent を使用した epoll、kqueue などの NBIO を使用した効率的なプリフォーク サーバー設計
クライアントにデータを「ストリーミング」するための「comet」サーバーを作成する予定です。マルチコア CPU を利用するために過去に 1 つを強化しましたが、今はゼロから始めています。サーバーの電源として epoll/kqueue または libevent を使用する予定です。
私が重視してきた問題の 1 つは、どのサーバー設計を使用するかということです。マルチプロセス モデルを使用してすべての CPU コアを活用することを計画しているため、いくつかのオプションを利用できます。
- 事前にフォークされたマルチプロセス - 独自の受け入れを行う各プロセス
- マスターを使用した事前フォークされたマルチプロセス - マスター プロセスが受け入れ、記述子の受け渡しを使用して、受け入れたソケットをプロセスに渡します。
- 異なるポートを持つ事前フォークされたマルチプロセス - 各プロセスは、同じシステムの異なるポートでリッスンします。ロードバランサーは、個々のデーモン プロセスからの負荷フィードバックに基づいて、次の接続を取得するプロセスを決定します。
設計 #2 は最も複雑です。設計 3 は単純ですが、設計に関係なく追加のハードウェアが必要になります。これは、複数のマシンでこれを実行し、とにかくロードバランサが必要になるためです。設計 1 には雷の群れの問題がありますが、雷の群れは 8 つのプロセスでは大したことではないと思いますが、クライアントが絶えず接続と切断を繰り返している場合 (これはコメット サーバーであるため、これはまれなはずです) は大したことではありません。
私が見たように、#2は複雑で、受け入れごとにマスタープロセスとスレーブプロセスの間で記述子を渡すため、2つの追加のシステムコールが必要です。雷鳴の群れの問題とは対照的に、このオーバーヘッドを持っている方が良いでしょうか? 8 つのプロセスが起動して受け入れを実行している場合、デザイン #1 を使用すると、8 つの受け入れ呼び出しが表示される可能性がありますか?
デザインの選択の長所と短所は何ですか? あなたは何をお勧めします?