問題タブ [single-threaded]

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 投票する
1 に答える
63 参照

c# - 新しいスレッドで既に呼び出されているメソッドを呼び出す

新しいスレッドで呼び出されるメソッド「ImportExcel」があります。

ImportExcel() 関数内に、try catch ブロックがあります。catch ブロックでは、特定の例外が発生した場合、ImportExcel() 関数を再度呼び出したいと考えています。それ、どうやったら出来るの?

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

javascript - サーバーは複数の Web ページを同時に 1 台のマシンに配信できますか?

単一のマシンを処理する場合、Web サーバーが同じドメインへの複数の要求を非同期に処理して応答することは可能ですか? リクエストは Javascript で行われます。

そのような場合でも、サーバーはどのように機能しますか? 一度に 1 つの要求を処理して送信しますか? たとえば、Web サーバーから 5 つの異なるページを同時にロードしたい場合、マシンへのページ 1 のロードが完了するまでページ 2 を待つ必要がありますか? または、ページ 1 と 2 を同時にロードできますか?

ありがとう。

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

c# - UI からコードのシングル スレッド実行を停止することは可能ですか?

私のソリューションでは、ボタンクリックで単語の自動化が開始されるユーザーインターフェイスを取得しました(そのボタンをwordStartと呼びましょう)。この単語オートメーションを別のボタンクリックで中断したいと思います (そのボタンを wordBreak と呼びましょう)。

しかし、wordStart をクリックすると、作業中にユーザー インターフェイスがフリーズし、wordBreak ボタンをクリックできなくなります。私はまだプログラミングに少し慣れていないので、これはアプリケーションがシングルスレッドであるか、少なくともマルチスレッドで解決できるためであるに違いありません。

したがって、これは 2 in 1 の質問です。1. シングル スレッド アプリケーションでコードの実行を停止することは可能ですか? 2. コードの実行を停止するにはどうすればよいですか?

質問番号2については、インターネットを少し調べたところ、うまくいくと思われるこれらの方法が見つかりましたが、他の提案は大歓迎です:

編集:これはマルチスレッドで行うべきだと思った。私はそれについてあまり経験がないので、誰かがここで私を助けたい場合は、このコードを質問に追加しました。それまでの間、私はこれに対する解決策を自分で探します。

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

javascript - nodejsシングルスレッド? 同時リクエストが多数ある場合、どのように機能しますか

私はnodejsを初めて使用し、現在学習しています。nodejsがシングルスレッドであることは知っていますが、疑問に思っています.たとえば、20000の同時リクエストがあり、1つのリクエストに長い時間がかかる必要がある場合など、非ブロッキングメソッドを使用すると、他のスレッドはより短い時間.

したがって、より長い時間の要求を満たすと、nodejs は「こんにちは、一時停止してください。他の要求を使用する必要があります」と言うのですが、これを一時停止する必要があるかどうかを nodejs が検出するデフォルトの時間はありますか? 間違った単語「puase」を使用した場合は修正してください(これはシングルスレッドであるため、別のリクエストを処理したい場合は、あるリクエストの計算を停止する必要があるためです)。

私が想定した状況では、長いリクエストは処理に多くの時間を必要としますか?

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

javascript - JavaScript のシングル スレッド モデルは、時間のかかるタスクをどのように処理しますか?

この質問は、JavaScript の単一スレッド モデルに関するものです。javascript は、非同期イベント キューにコールバックを追加できるため、本質的に非ブロックであることを理解しています。しかし、実際にコールバック関数が完了するまでに長い時間がかかる場合、JavaScript はシングル スレッドであるため、その間に他のすべてをブロックするのではないでしょうか? nodejs はこのような問題をどのように処理しますか? また、これはフロントエンドの開発者にとって避けられない問題ですか? 関数タスクをできるだけ小さくすることは一般的に良い習慣であると読んだので、この質問をしています。JavaScriptの長いタスクが実際に他のタスクをブロックするからですか?

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

javascript - NodeJS: ノンブロッキング / イベントキュー / シングルスレッドを理解する

私はノードが初めてで、ノードの非ブロッキングの性質を理解しようとしています。
下の画像では、リクエストの概要図を作成しました。

ここに画像の説明を入力

私が理解しているように、単一のアプリに対する単一のユーザーからのすべてのプロセスは、単一のスレッドで実行されます。
私が理解したいのは、イベント ループのロジックがこの図にどのように適合するかということです。イベント ループは、命令がキューに入れられるプロセッサ パイプラインと同じですか?
プログラムが読み取るストリームを作成する RAM にアプリ ページをロードするとします。

読み取りストリームを作成し、データが発生するのを待つための命令: この命令は、プロセッサのレジスタで「ハング」しますか (I/O が終了するのを待機します) が、マルチスレッド環境では、プロセッサは新しい命令を取得しません。前の I/O 要求の結果が RAM に返されるまで、RAM は?
それとも、これを完全に/部分的に間違って見る方法ですか?

補足的な (関連する、おそらくばかげた) 質問: サーバー上のさまざまなスレッドでさまざまなユーザーを実行しますが、シングル スレッドのメリットは 1 人のユーザーだけのものではありませんか?

私はこの種の詳細に慣れていないので、この質問が完全に意味をなさない場合は申し訳ありません. しかし、これを理解することは、先に進む前に私にとって不可欠なようです。

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

c# - 複数のクライアントに対して、単一のソケット、単一のスレッド、TCP/IP パケット リーダーを作成することは可能ですか?

典型的なサーバー アプリケーションは、着信接続ごとにソケットを作成し、新しいスレッドを生成します。

ただし、単一のスレッドで自分でデマルチプレクサを実行することは可能ですか? 私が望むのは、データが単一のスレッドで利用可能になると、アプリケーションがメッセージを逆シリアル化するエンドポイントごとにステートマシンを保持することです。

スレッド化は最も単純であり、私はそれを実際に実装しています。ただし、各スレッドはオーバーヘッドをかなり急速に追加し、接続が長引くとリソースが必要になります。私が望むのは、代わりに、ステート マシンが接続ごとにメッセージを作成し (スレッド化されたコードは既に実行しています)、完了時に非シリアル化されたメッセージをワーカー キューにディスパッチすることです。

これは .NET で可能ですか? P/Invoke も許容できるソリューションです。

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

java - シングルスレッド Java アプリケーションは 70 を超えるスレッドで開始します

計算サーバーでシングルスレッドアプリケーションを起動すると、(openJDK) JVM の非常に奇妙な動作が発生しました。

JVM は、すべてのプロセッサの CPU 負荷を大幅に増加させる多くの (実際には非常に多くの) スレッドを開始しますが、それについての適切な説明はありません [下の画像を参照]。

さらにいくつかのこともテストしました。

  1. また、最大 200 GB の RAM を備えた Amazon EC2 インスタンスで実行してみましたが、数少ないスレッド数で同様の結果が得られました。
  2. でアプリを起動する代わりに、次のjava -Xms4096M -Xmx100000M -jar ...ような小さなパラメーターを試しましたがjava -Xms1024M -Xmx1024M -jar ...、何も変わりませんでした。

他の誰かがすでにそのような行動を経験していますか?

またはさらに良い: 誰かがここで何が起こっているのか説明してもらえますか?

http://i.stack.imgur.com/E9XtQ.png

編集: 私はあなたが提案したことのいくつかを試してみましたが、実際に価値のある出力と価値のない出力が得られました. jstack PIDは機能せずjstack -F PID、メインプロセスの出力が次のようになるものを使用することをお勧めします。 kill -3 PID何も出力しません。

kill に属しているのか jstack に属しているのかはわかりませんが、tmux でこれを見つけました。

CPU負荷が高い実行中のプロセスのPIDを確認しました->それらはGCスレッドに属しています。単一のスレッド化されたプログラムがどのようにして大量のガベージを生成し、それらすべての GC スレッドをビジー状態に保つことができるのかはまだわかりません... しかし、少なくともそれは出発点です。コードの完全な説明とデバッグ (これは研究プロジェクトであるため多少複雑です) は、明らかに範囲外です。

トピックに直接関係する最後の質問かもしれません: JVM が生成する GC スレッドの数を調整することは可能ですか? などを使ってガベージ コレクションのデバッグを開始し-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetailsますので、役立つツールやヒントがあれば教えてください。;)