問題タブ [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 投票する
3 に答える
950 参照

multithreading - マルチスレッドでできることはすべてシングルスレッドでできますか?

私の第 1 の質問: タイトルのとおりです。

StackExchange の質問に出くわしたので、これを尋ねています。単一のスレッドではできない複数のスレッドでできることは何ですか?

そのリンクで提供されているソリューションの1つでは、マルチスレッドでできることは何でも、シングルスレッドでも実行できると述べています。

しかし、これは真実ではないと思います。私の主張は次のとおりです。ソケット プログラミングを使用して単純なチャット プログラムを作成し、コマンド コンソールを介して実行する場合。チャット プログラムがシングル スレッドの場合。チャット プログラムは実際には半二重です。つまり、聞くことと話すことを同時に行うことはできず、毎回片方だけが話すことができ、もう一方は聞く必要があります。両方の当事者が同時にメッセージを送受信できるようにするには、マルチスレッドで実装する必要があります。

私の2番目の質問:私の議論は正しいですか?それとも、ここでいくつかの点を見逃したので、単一のスレッドでマルチスレッドが行うすべてのことを実行できますか?

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

event-loop - nodeJS - コードの動作が理解できない

上記のコードは nodejs コードであり、その出力は次のようになります。

しかし、私は次のような出力を得ています:

シングル スレッドと非同期コールバックの概念のどこかが間違っています。コードがどのように機能するかを誰かに説明してください。

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

javascript - 競合状態に対処する方法

私はWeb開発にかなり慣れていません。競合状態について読んだことから、ノードまたはJSではシングルスレッドであるため不可能だと思いましたが、それは..間違っていると思います。この小さな例で、誰かがそれがどのように機能するかを説明できます.

$1000 ドルの銀行口座があり、2 人のユーザーがサーバーにまったく同時にアクセスして、まったく同じ秒で口座に請求したとします。1 人目は 600 ドル、2 人目は 200 ドルです。

最初の請求は $1000 ~ $600 となり、残りは $400 になります。しかし、2 回目の請求がまったく同時に発生したため、1000 ドルから 200 ドルになり、残高は 800 ドルになります。明らかに残高が$200になるはずです。

競合状態を引き起こす私の理解から、いいえ?この問題を回避するには、どのように設定しますか? 正確なコードは必要ありません。おそらく誰かがこれを説明してくれるか、疑似コードです。

前もって感謝します。

編集:コードが最初にどのように設定され、競合状態が発生するかについて編集します。

以下の投稿のように。コードは、アカウントがヒットしたときに金額を差し引いて新しい残高を与えるように設定されます。明らかに、それは競合状態を引き起こします。

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

windows - 単一の論理プロセッサで実行されるバッチ ファイルを自動的に制限する方法は?

他のリアルタイム アプリケーションのパフォーマンスへの影響を最小限に抑えるために、一部の (imagemagick 画像処理) バッチ ジョブを単一の論理プロセッサのバックグラウンドで実行するように自動的に制限したいと考えています。

私がまとめた方法は、コマンド ライン引数をフラグとして使用することです。バッチ ファイルが最初にコマンド ライン引数なし (およびアフィニティなし) で開始されると、アフィニティが最後の論理プロセッサに設定された状態で再び開始され、アフィニティが設定されていることを示す仮引数が追加され、バッチ ジョブ:

これは、バッチ ジョブを最後の (4 番目の) 論理プロセッサに限定するために、私の 4 コア Win8.1 システムで問題なく動作しているようです。私の質問は - これを行うための「より良い」方法はありますか?

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

c++ - C++ ライブラリにシングル スレッドを使用させることはできますか?

pthreads を使用する gcc を介してコンパイルされた、Linux で独自の C++ ライブラリを使用しています (gcc で -lpthreads フラグを使用する必要があります)。その周りにラッパーがあり、ライブラリが複数のスレッドを使用していることを知っています。

ライブラリは複数のスレッドを動的に使用します。これを呼び出すと、20 対 1 のスレッドの間のどこにでも表示されます。しかし、私はタスクセットを使いたくありません。(他のプロセスを実行していて、システムにコアを管理させたい)。

実行可能ファイルにシングル スレッドの使用を強制する方法はありますか? コンパイル時または実行時のいずれか。ありがとう。

編集:タスクセットで実行可能ファイルを実行すると、 cat /proc//status から次のようになります。

状態: R (実行中) Tgid: 1623 Pid: 1623 PPid: 31002 TracerPid: 0 Uid: 500 500 500 500 Gid: 100 100 100 100 Utrace: 0 FDSize: 256 グループ: 100 VmPeak: 346528 kB VmSize: 345956 kB KB VMHWM:199816 KB VMRSS:188388 KB VMDATA:192120 KB VMSTK:128 KB VMEXE:656 KB VMLIB:12444 KB VMPTE:432 KB VMSWAP:0 kb shigq:2/62004 00000000000000000000000000000000000000000000000000000000000000000000 SigIgn: 0000000000000004 SigCgt: 0000000180000000 CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: ffffffffffffffff Cpus_allowed: 02 Cpus_allowed_list: 1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 Voluntary_ctxt_switches: 3460 nonvoluntary_ctxt_switches: 24907

どうやら、シングルスレッドで実行できるようです。

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

c++ - C ++のシングルスレッドアプリケーションでvolatileはまったく役に立ちますか?

タイトルがvolatile示すように、シングルスレッド プログラミングのコンテキストで役立つケースはありますか? 変数の値が常に実際にメモリ内でチェックされるようにするために使用されることを知っているので、アプリ/コンパイラが気付かない方法でその値が (ST アプリで) 変更される可能性がある場合はありますか?

この質問への回答に影響を与えるような言語間の違いを認識していないため、この質問は言語に依存しないままにしておきます。でも、もしあったら教えてください。

編集:私に指摘されたように、質問は言語にとらわれません。次に、C++固有のものにしています(C++バージョンにも違いがあることを読みましたが、この質問が広すぎるほど大きくないことを願っています)。

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

c# - volatile は C# のシングルスレッド アプリケーションでまったく役に立ちますか?

シングルスレッドプログラミングのコンテキストで volatile が役立つ場合はありますか? 変数の値が常に実際にメモリ内でチェックされるようにするために使用されることを知っているので、アプリ/コンパイラが気付かない方法でその値が (ST アプリで) 変更される可能性がある場合はありますか?

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

java - volatile は、Java のシングルスレッド アプリケーションでまったく役に立ちますか?

タイトルにあるように、Java でのシングルスレッド プログラミングのコンテキストで volatile が役立つケースはありますか? 変数の値が常に実際にメモリ内でチェックされるようにするために使用されることを知っているので、アプリ/コンパイラが気付かない方法でその値が (シングルスレッドアプリケーションで) 変更される可能性がある場合はありますか?

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

javascript - シングルスレッド JavaScript でのアニメーション

JavaScript はシングル スレッド言語であるため、一度に 1 つのコマンドを実行します。非同期プログラミングは、ブラウザーによって管理されるWeb API (イベント処理用の DOM、AJAX 呼び出し用の XMLHttpRequest、setTimeout 用の WindowTimers ) およびイベント キューを介して実装されています。ここまでは順調ですね!次の非常に単純なコードを考えてみましょう。

誰かが上記の根底にあるメカニズムを私に説明してもらえますか? .hide() はまだ終了しておらず (アニメーションは 17 秒続きます)、JS エンジンはそれを処理しており、一度に 1 つのコマンドを実行できるため、次の行に移動して、残りのコード?

あなたの答えがアニメーションがプロミスを作成するというものである場合、質問は同じままです: JavaScript が同時に複数のことを処理する方法 (アニメーション自体を実行し、プロミスの場合はアニメーション キューを監視し、それに続くコードを続行します。 ..)。

さらに、コードの実行と同時に残りのコードが実行されることを意味する解決または拒否されるまで、親の Deferred オブジェクト を監視する必要がある場合、jQuery のプロミスがどのように機能するかを説明できません。シングルスレッドのアプローチでそれはどのように可能ですか? AJAX呼び出しを理解するのに問題はありません.JSエンジンから取り除かれていることを知っています...