タグ付けされた質問 「multithreading」

マルチスレッドとは、複数の同時実行ストリーム(一般にスレッドと呼ばれる)を利用して、コンピューターまたはプログラムが作業を同時にまたは非同期に実行する機能です。

5
マルチスレッドに代わるNode JSの把握
私が正しく理解していれば、Node JSは非ブロッキングです...データベースまたは他のプロセスからの応答を待つ代わりに、何か他のノードに移動し、後でチェックします。 また、シングルスレッドです。 つまり、これはすべて、特定のNode JSプロセスが単一のCPUコアを完全かつ効率的に利用できることを意味しますが、マシン上の他のコアを使用しないため、一度に複数のコアを使用することはありません。 もちろん、これは、他のCPUがSQLデータベースや他の意図的に分離されたCPU負荷の高いサブルーチンなどの他のプロセスによって、それらが別個のプロセスである限り、引き続き使用できることを意味します。 また、Node JSプロセスにエンドレスループまたは長時間実行機能がある場合、エンドレスループまたは長時間実行機能が停止する(またはプロセス全体が終了する)まで、そのプロセスはまったく役に立たなくなります。 大丈夫ですか?私の理解は正しいですか?


17
マルチスレッディング:コアよりも多くのスレッドのポイントは何ですか?
マルチコアコンピューターのポイントは、複数のスレッドを同時に実行できることだと思いました。その場合、クアッドコアマシンを使用している場合、一度に4つ以上のスレッドを実行する意味は何ですか?彼らは単にお互いから時間(CPUリソース)を盗んでいるのではないでしょうか?

6
スレッドモジュールとマルチプロセッシングモジュールの違いは何ですか?
threadingとのmultiprocessingモジュールをPythonで使用して特定の操作を並行して実行し、コードを高速化する方法を学んでいます。 threading.Thread()オブジェクトとオブジェクトの違いが何であるかを理解するために、これについて(理論的な背景がないので)難しいと感じていますmultiprocessing.Process()。 また、ジョブのキューをインスタンス化し、4つ(たとえば)だけを並行して実行し、他のリソースが実行される前にリソースが解放されるのを待つ方法は、私には完全には明らかではありません。 ドキュメントの例は明確ですが、完全ではありません。少し複雑にしようとすると、多くの奇妙なエラーが表示されます(酸洗いできないメソッドなど)。 では、threadingとmultiprocessingモジュールをいつ使用すればよいですか? これら2つのモジュールの背後にある概念と、それらを複雑なタスクに適切に使用する方法を説明するリソースに私をリンクできますか?

8
!=チェックスレッドは安全ですか?
などの複合操作i++は複数の操作を伴うため、スレッドセーフではありません。 しかし、それ自体で参照をチェックすることはスレッドセーフな操作ですか? a != a //is this thread-safe 私はこれをプログラムして複数のスレッドを使用しようとしましたが、失敗しませんでした。私のマシンではレースをシミュレートできなかったと思います。 編集: public class TestThreadSafety { private Object a = new Object(); public static void main(String[] args) { final TestThreadSafety instance = new TestThreadSafety(); Thread testingReferenceThread = new Thread(new Runnable() { @Override public void run() { long countOfIterations = 0L; while(true){ boolean …


1
待機可能なThread.Sleepを取得する方法?
私はawait / sleepパラダイムに基づいてネットワークにバインドされたアプリケーションを書いています。 時々、接続エラーが発生し、私の経験では、しばらく待ってから操作を再試行するのにお金がかかります。 問題は、await / asyncでThread.Sleepまたは他の同様のブロック操作を使用すると、呼び出し元スレッドのすべてのアクティビティをブロックすることです。 同じ効果を得るには、Thread.Sleep(10000)を何に置き換えればよいですか。 await Thread.SleepAsync(10000) ? 更新 私は追加のスレッドを作成せずにこれを行う答えを好みます

12
複数のスレッドからjava.util.HashMapから値を取得しても安全ですか(変更なし)?
マップが作成され、一度初期化されると、再度変更されることはありません。ただし、複数のスレッドから(get(key)を介してのみ)アクセスされます。java.util.HashMapこのように使用しても安全ですか? (現在、私は喜んで使っていjava.util.concurrent.ConcurrentHashMapて、パフォーマンスを向上させるために何を測定する必要がありませんが、シンプルであれば、単純に興味津々HashMap十分であろう。したがって、この質問がありません「?1は、私が使用すべき」またそれがパフォーマンスの問題です。むしろ、問題は「安全でしょうか?」)

13
非同期プログラミングと並列プログラミングの違いを明確にする方法は?
多くのプラットフォームは、応答性を向上させる手段として非同期性と並列性を促進しています。私はその違いを大まかに理解していますが、自分自身や他の人の心の中で明確に表現するのは難しいと感じることがよくあります。 私は平凡なプログラマーであり、非同期とコールバックをかなり頻繁に使用しています。並列処理はエキゾチックです。 しかし、特に言語設計レベルでは、それらは簡単に融合しているように感じます。それらがどのように関連しているか(または関連していないか)の明確な説明と、それぞれが最もよく適用されるプログラムのクラスが気に入っています。


11
スレッドとThreadPool
新しいスレッドの使用とスレッドプールのスレッドの使用の違いは何ですか?パフォーマンス上の利点は何ですか。また、明示的に作成したスレッドではなく、プールのスレッドの使用を検討する必要があるのはなぜですか。ここでは特に.NETについて考えていますが、一般的な例は問題ありません。

5
CancellationTokenがCancellationTokenSourceと分離しているのはなぜですか?
クラスCancellationTokenに加えて.NET 構造体が導入された理由の根拠を探していますCancellationTokenSource。APIの使用方法は理解していますが、そのように設計されている理由も理解したいと思います。 すなわち、なぜ私たちは持っているのですか? var cts = new CancellationTokenSource(); SomeCancellableOperation(cts.Token); ... public void SomeCancellableOperation(CancellationToken token) { ... token.ThrowIfCancellationRequested(); ... } 次のように直接渡す代わりにCancellationTokenSource: var cts = new CancellationTokenSource(); SomeCancellableOperation(cts); ... public void SomeCancellableOperation(CancellationTokenSource cts) { ... cts.ThrowIfCancellationRequested(); ... } これは、トークンを渡すよりもキャンセル状態のチェックが頻繁に行われるという事実に基づくパフォーマンス最適化ですか? それで、CancellationTokenSourceを追跡して更新できCancellationTokens、各トークンのキャンセルチェックはローカルフィールドアクセスですか? どちらの場合も、ロックされていない揮発性のブールで十分であることを考えると、なぜそれが速いのかはまだわかりません。 ありがとう!


6
Java静的初期化子はスレッドセーフですか?
静的コードブロックを使用して、レジストリ内のいくつかのコントローラーを初期化しています。したがって、私の質問は、クラスが最初にロードされたときに、この静的コードブロックが絶対に一度だけ呼び出されることを保証できますか?このコードブロックがいつ呼び出されるかは保証できないことを理解しています。Classloaderが最初にそれをロードしたときに、それを推測しています。静的コードブロックのクラスで同期できることはわかっていますが、これは実際に何が起きているのでしょうか。 簡単なコード例は次のようになります。 class FooRegistry { static { //this code must only ever be called once addController(new FooControllerImpl()); } private static void addController(IFooController controller) { // ... } } または私はこれを行うべきですか? class FooRegistry { static { synchronized(FooRegistry.class) { addController(new FooControllerImpl()); } } private static void addController(IFooController controller) { // ... } }

5
Androidの非同期タスクとスレッド
UIでは、いくつかのバックグラウンド作業を実行するために、別のを使用しましたThread。しかし、他の人が示唆したように、私は現在を使用していAsyncTaskます。 a Threadとanの主な違いは何AsyncTaskですか? どのシナリオで、a ThreadまたはAsyncTask?を使用する必要がありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.