問題タブ [event-loop]

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.

0 投票する
2 に答える
2727 参照

python - ZeroMQポーラーとトルネードEventLoop

複数のZeromqソケットを処理するために推奨されるアプローチとその理由は、設計上およびパフォーマンス上です。

ZeroMQで使用されるTornadoのIOLoopは、複数のソケットを処理するためのwhileループで使用されるPollerよりもCPUの占有率が低いというのは本当ですか?

0 投票する
1 に答える
307 参照

javascript - js イベント ループは、一時的なスクラッチ スペースにグローバル変数を使用できることを意味しますか?

* 免責事項: これが良い考えだと言っているわけではありません - 実際問題として、そうではないとはっきり言います - したがって、この質問は、コーディング スタイルにとってイベント ループが正確に何を意味するのかを理解しようとするものです。

javascript-has-no-threads マントラに関する私の初歩的な理解は、ランタイムがすべての javascript を短い「コードのブロック」として扱い、実行中にブロックから移動することなく次々に実行されるようにスケジュールされているということです。この場合のコード ブロック (実際の用語はわかりません) は、基本的に、イベント ハンドラーがトリガーされた結果として実行されるコードです。

私の理解が正しければ、グローバル変数の使用が複数の「コードブロック」にまたがらない場合、グローバル変数を使用することは技術的に100%安全であることを意味します。

したがって、たとえば、単一のグローバル オブジェクトがある場合window.workspace、イベント ハンドラーとそこから流れるすべてのコードを、一時変数をクロージャーに格納するのではなく、すべて に格納できますwindow.workspace。ワークスペースがイベント ハンドラー (同じものであっても) の呼び出しの間に状態を保持すると想定しない限り、これは完全に安全なはずです。

これは正確ですか(ただし、繰り返しになりますが、お勧めしません)

0 投票する
1 に答える
276 参照

node.js - スレッド内のイベントループとは論理的に何ですか?

node.js私はとpython's tornado対 に出くわしましたApache

彼らが言うには :

  • Apache はすべての接続に対してスレッドを作成します。
  • Node.js&tornadoは実際にスレッドでイベント ループを実行し、1 つのスレッドで多くの接続を処理できます。

論理的にスレッドの子になるものを理解していません。コンピュータ サイエンスの用語では、次のようになります。

  • プロセスはメモリを分離し、CPU をコンテキスト スイッチで共有します。
  • スレッドはプロセスを分割します。
  • したがって、複数の制御点を持つプロセスは、複数のスレッドによって実現されます。

今、

event loopスレッドの下でどのように機能しますか?

スレッドの1つの制御下で異なる接続をどのように処理できますか?

アップデート :

つまり、1 つのスレッドで 3 つのソケットとの通信がある場合、1 つのスレッドが 3 つのソケットと通信し、誰も待たせないようにするにはどうすればよいでしょうか?

0 投票する
2 に答える
789 参照

objective-c - Objective-C のイベント ループについて

Objective-C イベント ループの 1 回の反復で送信されたすべてのメッセージをログに記録するにはどうすればよいですか?

Objective-C ランタイムの理解をさらに深めたいと考えており、これは良いスタートになると思いました。

0 投票する
3 に答える
1396 参照

multithreading - tkinter + pyhook を使用するとフリーズします。2 つのイベント ループとマルチスレッド

ユーザーがキーボードまたはマウスボタンを押した回数を登録するPython 2.7でツールを作成しています。クリック数は、画面左上の小さな黒いボックスに表示されます。プログラムは、別のアプリケーションがアクティブな場合でもクリックを登録します。

ボックスの上にマウスを移動する場合を除いて、正常に動作します。その後、マウスが数秒間フリーズした後、プログラムが再び動作します。次にマウスをボックスの上にもう一度移動すると、マウスは再びフリーズしますが、今度はプログラムがクラッシュします。

pumpMessages() をコメントアウトしてみましたが、プログラムは機能します。問題はこの質問pyhook+tkinter=crashによく似ていますが、解決策はありませんでした。

他の回答は、python 2.6 で wx と pyhook を一緒に使用すると、dll ファイルにバグがあることを示しています。それがここに関連しているかどうかはわかりません。

私自身の考えでは、2 つのイベント ループが並行して実行されていることに関係があるのではないかと考えています。tkinter はスレッド セーフではないことを読みましたが、pumpmessages() と mainlooop() の両方を実行する必要があるため、このプログラムを単一のスレッドで実行する方法がわかりません。

要約すると、マウスオーバーでプログラムがフリーズするのはなぜですか?

0 投票する
2 に答える
2652 参照

c++ - Qt-スロットを使用せずにカスタムイベントループで閉じたウィンドウを検出する方法

QGLWidgetをフロントエンドとして使用するOpenGLベースのゲームに取り組んでいます。しかし、すべての不要なオーバーヘッド(および重いQTライブラリを配布する必要がある!)のために、私はGLUTに移行する予定であり、大きな飛躍の前に「Qt-stuff」をより標準的な代替手段に置き換えるプロセスにあります。

フレームレートとfpsタイマーを制御するQTimersを置き換えるために、次のように、app.exec()呼び出しを置き換える単純なループにこれらの関数をくさびで留めようとしています。

これまでのところ、実行時に正常に動作しますが、(システムの[X]ボタンを使用して)ウィンドウを閉じようとすると、ウィンドウは消えますが、プログラムはバックグラウンドでハングします。問題は、exit()またはclose()が呼び出されたことを示す静的フラグまたはクエリ関数が見つからないことです。 bool closingDown()常にfalseのようで、デストラクタの静的フラグを切り替えて~MainWindow検出しようとしましたが、終了するまで呼び出されないため、これも機能しませんmain。QAppsのaboutToQuit()信号に結び付けるか、Qappから派生クラスを作成してそれをインターセプトすることで、おそらくそれを実行できることはわかっていますが、そのようなものは、信号/スロットから離れるという目的に反します。クラスの外部から、QApplicationがシャットダウンするように命令されたかどうかを確認する簡単な方法はありますか?

0 投票する
4 に答える
662 参照

perl - Perl と X Window にイベント ループ グラフィックがない?

1980 年代の Apple II BASIC では、"HGR" を使用して画面に移動し、"HCOLOR" で色を設定し、"HPLOT" で点をプロットしていました。また、スクリーン バイト データを操作することもでき、プログラム制御をイベント ハンドラに渡す必要はありません。この途方もなく初歩的な機能は、今日、すべての言語とすべてのライブラリに欠けているようです。

そこで、 X Window APIを使用して C でこれを行うための小さなライブラリを作成しました。ウィンドウのビットマップを変更し、変更したものを表示できます。これは簡単なことではありませんでした。二度とやりたくありません。

私は現在いくつかの目的で Perl を使用していますが、Perl 用のツールが必要です。新しいスレッドを生成せずに戻るサブルーチンを呼び出すことができ、ウィンドウを出力し、ウィンドウにグラフィカルなものを追加できます。プログラムが気に入ったときにイベントをクエリします。これは 1980 年代の BASIC の機能なので、難しくはないはずです。しかし、私が見たツールではそれができませんでした:

  • GD: 私が見る限り、これはグラフィック ウィンドウではなく、グラフィック ファイルを作成します。別のプログラムにパイプする必要があるようです。
  • Gtk2: イベントをキャッチするために別のスレッドを分岐する必要があります。そうしないと、ウィンドウが表示されません。私は何もフォークしたくありません。後でキューに積み上げられたものを見るように特に頼まない限り、ほとんどのイベントは気にしません。
  • Qt : ここでは、制御をイベント ハンドラーに渡すことも期待されます。受け渡しなし、表示なし。C++ バージョンでは、ハンドオフなしで Qt を表示および描画することができました。
  • PerlTk: 再び愚かなハンドオフで。
  • OpenGL: ここでは、キープレスなどの X ウィンドウ イベントをキャッチする方法がわかりません。

実行中のアプリケーションから XWindow を起動する方法を知っている人はいますか? GUI アプリケーション プロセスをフォークせずに、点や線などの基本的なものをウィンドウに描画でき、自分のスケジュールでウィンドウのイベントを照会できる場所を知っていますか? Perl 用の X Window API を簡単に調べてみましたが、これは C と同じくらい恐ろしいものであり、C コードと Perl とのインターフェースも恐ろしいものです。必要なら、やります。しかし、そうではないかもしれません。Perl 用の HGR は既にありますか?

私が何を意味するのか疑問に思っている場合は、イベント ループ グラフィカル ライブラリがありません。このリンクされた論文を参照してください。これは残念ながら C 用です。このようなことは、プログラミングの入門クラス以外の科学的なものに非常に役立ちます。

0 投票する
2 に答える
1442 参照

python - GTK メインブロック -- Python

私は GTK を初めて使用し、単純に聞こえる問題に出くわしましたが、それを処理する方法が見つかりません。基本的に、呼び出しgtk.main()を行うと、シングル スレッド プロセスが停止します。gtk.main()それがブロックしていることは知っていますが、これまで一gtk.main()度も呼び出したことがありません。終了するループがないため、メイン ループを終了しても何の効果もありません。

それでも、gtk.main_level()0 を返します。また、gtk.main()python コマンド ラインから実行しようとすると、ハングします。私が欠けている基本的なものがあるので、誰かがそれを指摘できますか? 感謝。

編集:私が必要とする Gtk メソッドはgobject.add_timeout、次のようになります。

0 投票する
1 に答える
189 参照

java - JavaScript イベント ループとは何ですか? GWT とどのように関係していますか?

GWT アプリの開発について読んでいて、このページからの抜粋を読んでいます。

JavaScript のメイン イベント ループに 10 秒以上制御を戻さずに実行されるスクリプトは、ブラウザーがこのダイアログをユーザーにポップアップ表示するリスクがあります...

このJavaScript のメイン イベント ループは、JS コンストラクト、GWT コンストラクト、またはブラウザー固有のものですか? クライアント側の GWT アプリとの関係は? 前もって感謝します!

0 投票する
1 に答える
8988 参照

python - Pythonの基本的なイベントループ

重複の可能性:
Python 3のイベントループの実装?

python2.7でイベントループを実装しようとしています。時間イベントに基づいて、また別のアクションが発生した結果として、イベントをトリガーできるようにしたいと思います。

select私はこれに似た何かをするために利用できることを理解しています。

これは正しい方法ですか、それとも私が見逃しているより良い方法がありますか?