問題タブ [green-threads]
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.
ruby-on-rails - Thread.new を使用してレール上でメールを送信する
このようにアプリケーション(ruby 1.8.7、rails 2.3.2)でメールを送信しています
Thread.new{UserMailer.deliver_signup_notification(user)}
ルビーはグリーンスレッドを使用するため、これを行うとパフォーマンス上の利点があります
UserMailer.deliver_signup_notification(user)
。
ありがとう
multithreading - マルチコア プログラミングをサポートするスクリプト言語はどれですか?
私は小さな Python アプリケーションを作成しました。ここでは、通常の実行時にタスク マネージャーがどのように表示されるかを確認できます。
(出典: weinzierl.name )
アプリケーションは完全にマルチスレッド化されていますが、驚くことではありませんが、使用する CPU コアは 1 つだけです。最新のスクリプト言語のほとんどがマルチスレッドをサポートしているにもかかわらず、スクリプトは 1 つの CPU コアでしか実行できません。
Ruby、Python、Lua、PHP はすべて、単一のコアでのみ実行できます。特に並行プログラミングに向いていると言われるErlangにも影響が出ています。
単一のコアに限定されないスレッドのサポートが組み込まれているスクリプト言語はありますか?
要約
答えは私が期待したものではありませんでしたが、TCL
答えは近づいています。を追加したいと思います。perl
これは (のようにTCL
) インタープリターベースのスレッドを持っています。
Jython、IronPython、およびGroovyは、実績のある言語と実績のある別の言語の仮想マシンを組み合わせたものです。この方向へのヒントをありがとう。
Aiden Bell の回答をAccepted Answerとして選択しました。彼は特定の言語を示唆していませんが、彼の発言は私にとって最も洞察に満ちていました。
python - アイコンがロードされ、tk.mainloop がスレッド内にある場合、Tkinter は Python をロックします。
これがテストケースです...
このコードは機能します。t.iconbitmap 行のコメントを外すと、ロックされます。好きなように再配置します。ロックします。
アイコンが存在するときにtk.mainloop がGILをロックしないようにするにはどうすればよいですか?
対象は win32 と Python 2.6.2 です。
multithreading - Haskell で 100 万のスレッドを作成するのにかかる時間は?
私が理解しているのは、Haskell にはグリーン スレッドがあるということです。しかし、どれだけ軽いか。100万のスレッドを作成することは可能ですか?
または、100,000 スレッドの場合、どのくらいの時間がかかりますか?
architecture - Erlang以外に「グリーンプロセス」に基づいているシステムは何ですか?
Green Thread(Wikipedia)でこの有益なページを読んでいたのですが、Erlang以外に「グリーンプロセス」に依存しているプログラミングシステムは他にあるのでしょうか。
編集:「グリーンスレッド!=グリーンプロセス」
グリーンプロセスベース
- Erlang
- インフェルノ
グリーンスレッドベース
- 行け
ネイティブプロセスベース
- C、C ++
更新:誰も質問に直接回答しなかったため、グリーンプロセス全般に関する詳細情報を提供する回答を受け入れました。
multithreading - 「グリーンスレッド」とErlangのプロセスの違いは何ですか?
Erlang の軽量プロセスについて読んだ後、私はそれらが「グリーン スレッド」であると確信しました。グリーンスレッドとErlangのプロセスには違いがあることを読むまで。しかし、私はそれを取得しません。
実際の違いは何ですか?
java - 2 つの Runnable オブジェクトの結合
たとえば、何かを実行する RunnableA という Runnable があるとします。また、別のことを行う RunnableB という Runnable もあります。これら 2 つの Runnables を何らかの方法で組み合わせて、同じスレッドで実行する方法はありますか?
質問の 2 番目の部分は、これが可能である場合、それらが実行される順序を指定できますか?
EDIT!: 私がこれをやりたかった理由は、EDT でコードを実行する必要があるが、他のコードの一部は別のスレッドで実行する必要があるためです。以下のコードを見てください。
このようなもの
これがうまく説明されていない場合は申し訳ありませんが、明確化が必要な場合はコメントを投稿してください。
ありがとう!
multithreading - Erlang プロセス、グリーン スレッド、コルーチンがカーネル スレッドよりも「軽量」である理由は何ですか? 重いコンテキスト切り替えはどうですか?
Erlang プロセス、グリーン スレッド、またはコルーチンについて言及するときはいつでも、カーネル スレッドと比較して、常に「軽量」であると説明されています。通常、与えられる理由は、カーネル スレッドが低速なコンテキスト スイッチングを伴うためです。
しかし、遅いコンテキスト切り替えについては正確にはどうなのでしょうか? そして、ユーザーランドでグリーンスレッドを切り替えるのと比べてどれくらい遅いですか?
コンテキスト切り替えは、Nignx などのイベント駆動型プログラムと Apache などのマルチプロセッシング プログラムとの間のパフォーマンスとメモリ消費の違いを説明する主な (唯一の?) 要因ですか?
c++ - c/c++ はシングル スレッドでプリエンプティブ マルチタスクを実行できますか?
C/C++ でのプリエンプティブマルチタスキング: 実行中のスレッドはタイマーによって中断され、タスクを切り替えることができますか?
グリーンスレッドなどを使用する多くの VM やその他の言語ランタイムは、これらの用語で実装されています。C/C++ アプリでも同じことができますか?
もしそうなら、どのように?
これはプラットフォームに依存するため、特定のプラットフォームでのサポートについて検討してください。SIGALRM
たとえば、 Linux のハンドラーで (おそらく ? を使用して) ある種の内部スタックを交換するためにできる魔法があればlongjmp
、それは素晴らしいことです!
気になったので質問します。
私は数年間、非同期 IO ループの作成に取り組んできました。非同期 IO ループを記述するときは、ループの DOS になるため、計算にコストのかかる計算をループに入れないように十分に注意する必要があります。
したがって、私は、非同期 IO ループを回復させたり、ある種のグリーン スレッドやそのようなアプローチを完全にサポートしたりするためのさまざまな方法に興味があります。たとえば、アクティブなタスクと a のループ反復回数をサンプリングし、SIGALRM
タスクがブロックされていることが検出された場合は、他のすべてのものを新しいスレッドに移動するか、これを巧妙に変更して目的の結果を得ることができます。
最近、この点に関して node.js に関するいくつかの不満がありました。他の場所で、Go やHaskellなどの他のランタイムに関する興味をそそるコメントを見てきました。しかし、C/C++ のシングル スレッドでプリエンプティブマルチタスクを実行できるかどうかという基本的な問題から離れすぎないようにしましょう。