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

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

8
Powershellはコマンドを並行して実行できますか?
大量の画像に対していくつかのバッチ処理を実行するPowerShellスクリプトがあり、並列処理を実行したいと考えています。Powershellには、start-job、wait-jobなどのバックグラウンド処理オプションがあるようですが、並列処理を行うために見つけた唯一の優れたリソースは、スクリプトのテキストを書き、それらを実行することでした(PowerShellマルチスレッド) 理想的には、.net 4のforeachに類似したものを希望します。 かなりのように見えないもの: foreach-parallel -threads 4 ($file in (Get-ChildItem $dir)) { .. Do Work } 多分私はc#にドロップダウンするほうがいいでしょう...

4
残りの操作をループで実行するJavaスレッドが他のすべてのスレッドをブロックする
次のコードスニペットは2つのスレッドを実行します。1つは毎秒の単純なタイマーログ、2つ目は剰余演算を実行する無限ループです。 public class TestBlockingThread { private static final Logger LOGGER = LoggerFactory.getLogger(TestBlockingThread.class); public static final void main(String[] args) throws InterruptedException { Runnable task = () -> { int i = 0; while (true) { i++; if (i != 0) { boolean b = 1 % i == 0; } } …

3
TPL TaskオブジェクトでDispose()を呼び出さないことは許容できると考えられますか?
バックグラウンドスレッドで実行するタスクをトリガーしたい。タスクの完了を待ちたくありません。 .net 3.5では、私はこれをしたでしょう: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); .net 4では、TPLが推奨される方法です。私が推奨する共通のパターンは次のとおりです。 Task.Factory.StartNew(() => { DoSomething(); }); ただし、StartNew()メソッドはTaskを実装するオブジェクトを返しますIDisposable。これは、このパターンを推奨する人々から見落とされているようです。Task.Dispose()メソッドに関するMSDNのドキュメントは言う: 「タスクへの最後の参照を解放する前に、必ずDisposeを呼び出してください。」 タスクが完了するまでタスクのdisposeを呼び出すことはできないため、メインスレッドを待機させてdisposeを呼び出すと、そもそもバックグラウンドスレッドで実行するポイントが無効になります。また、クリーンアップに使用できる完了/終了したイベントはないようです。 TaskクラスのMSDNページはこれについてコメントしておらず、 "Pro C#2010 ..."という本でも同じパターンを推奨しており、タスクの破棄についてはコメントしていません。 私がそのままにしておくとファイナライザーが最後にそれをキャッチしますが、これが戻ってきて、このような多くの火事をしていてファイナライザースレッドが圧倒されると、私に噛み付くのでしょうか? だから私の質問は: この場合Dispose()、Taskクラスを呼び出さなくても問題ありませんか?もしそうなら、なぜそしてリスク/結果はありますか? これについて説明しているドキュメントはありますか? それともTask私が見逃したオブジェクトを処分する適切な方法はありますか? または、TPLを使用してタスクを実行して忘れる別の方法はありますか?

11
スレッドセーフとはどういう意味ですか?
最近、UIスレッド以外のスレッドからテキストボックスにアクセスしようとすると、例外がスローされました。それは「コードがスレッドセーフではない」ことについて何かを言っていたので、結局、デリゲート(MSDNのサンプルを参考にした)を書き、代わりにそれを呼び出しました。 しかし、それでも、なぜすべての追加コードが必要なのかはよくわかりませんでした。 更新:チェックすると深刻な問題が発生しますか Controls.CheckForIllegalCrossThread..blah =true


2
executeFetchRequestの「列挙中にコレクションが変更されました」
私は何時間も問題に悩まされており、stackoverflowでこれについてのすべてを読んで(そして見つかったすべてのアドバイスを適用)、私は公式に助けを必要としています。; o) ここにコンテキストがあります: 私のiPhoneプロジェクトでは、バックグラウンドでデータをインポートし、それを管理オブジェクトコンテキストに挿入する必要があります。ここにあるアドバイスに従って、私がやっていることはここにあります: メインmocを保存する メインmocが使用する永続ストアコーディネーターを使用して、バックグラウンドmocをインスタンス化します コントローラーをバックグラウンドmocのNSManagedObjectContextDidSaveNotification通知のオブザーバーとして登録します。 バックグラウンドスレッドでインポートメソッドを呼び出す データを受信するたびに、バックグラウンドmocに挿入します すべてのデータがインポートされたら、バックグラウンドmocを保存します メインスレッドで、変更をメインmocにマージします 通知のオブザーバーとしてコントローラーを登録解除する バックグラウンドmocをリセットして解放する 時々(そしてランダムに)例外... *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x5e0b930> was mutated while being enumerated... ...バックグラウンドmocでexecuteFetchRequestを呼び出すと、インポートされたデータがすでにデータベースに存在するかどうかを確認するためにスローされます。importメソッドの外で実行されるものは何もないので、何がセットを変更しているのでしょうか。 コントローラーとテストエンティティのコード全体(これらの2つのクラスと変更されていないアプリデリゲートで構成されるプロジェクト)を含めました。 // // RootViewController.h // FK1 // // Created by Eric on 09/08/10. // Copyright (c) 2010 …


5
Javaでクラスの異なるインスタンスを実行しているスレッド間で静的変数を同期する方法は?
synchronizeメソッドの前にキーワードを使用すると、そのオブジェクトが同期されることを知っています。つまり、オブジェクトの同じインスタンスを実行している2つのスレッドが同期されます。 ただし、同期はオブジェクトレベルであるため、オブジェクトの異なるインスタンスを実行する2つのスレッドは同期されません。メソッドによって呼び出されるJavaクラスに静的変数がある場合、クラスのインスタンス間でそれを同期させる必要があります。2つのインスタンスは2つの異なるスレッドで実行されています。 次の方法で同期を達成できますか? public class Test { private static int count = 0; private static final Object lock= new Object(); public synchronized void foo() { synchronized(lock) { count++; } } } lock静的なオブジェクトを定義し、synchronizedそのロックにキーワードを使用しているため、静的変数countがクラスのインスタンス間で同期されているのは本当Testですか?

9
Java EEコンテナーでのスレッドの生成が推奨されないのはなぜですか?
Java EE開発について最初に学んだことの1つは、Java EEコンテナー内に自分のスレッドを生成してはいけないということです。でも考えてみると、その理由はわかりません。 それが推奨されない理由を明確に説明できますか? ほとんどのエンタープライズアプリケーションには、メールデーモン、アイドルセッション、クリーンアップジョブなどの非同期ジョブが必要だと思います。 それで、実際にスレッドを生成してはならない場合、必要なときにそれを行う正しい方法は何ですか?


4
C#での再入可能なロック
次のコードは、.NETでC#を使用してデッドロックを引き起こしますか? class MyClass { private object lockObj = new object(); public void Foo() { lock(lockObj) { Bar(); } } public void Bar() { lock(lockObj) { // Do something } } }

2
Linuxでの複数のスレッドによる信号処理
Linuxでは、プログラム(複数のスレッドがある可能性がある)がSIGTERMやSIGHUPなどのシグナルを受信するとどうなりますか? どのスレッドがシグナルをインターセプトしますか?複数のスレッドが同じシグナルを取得できますか?シグナルの処理専用の特別なスレッドはありますか?そうでない場合、シグナルを処理するスレッド内で何が起こりますか?シグナルハンドラルーチンが終了した後、実行はどのように再開されますか?
119 c  linux  multithreading  signals  ipc 

8
すべてのスレッドが完了するまでpythonマルチスレッド待機
これは同様の文脈で尋ねられた可能性がありますが、約20分の検索の後で答えを見つけることができなかったので、尋ねます。 Pythonスクリプト(例:scriptA.py)とスクリプト(例:scriptB.py)を作成しました scriptBで、異なる引数を使用してscriptAを複数回呼び出します。毎回実行するのに約1時間かかります(その巨大なスクリプトは、多くのことを実行します。心配する必要はありません)。すべての異なる引数を同時に使用するscriptAですが、続行する前にすべての引数が完了するまで待つ必要があります。私のコード: import subprocess #setup do_setup() #run scriptA subprocess.call(scriptA + argumentsA) subprocess.call(scriptA + argumentsB) subprocess.call(scriptA + argumentsC) #finish do_finish() すべてをsubprocess.call()同時に実行し、すべてが完了するまで待機したいのですが、どうすればよいですか? ここの例のようにスレッドを使用しようとしました: from threading import Thread import subprocess def call_script(args) subprocess.call(args) #run scriptA t1 = Thread(target=call_script, args=(scriptA + argumentsA)) t2 = Thread(target=call_script, args=(scriptA + argumentsB)) t3 = Thread(target=call_script, args=(scriptA + …

1
ダミーのApartmentState
私はこれを使用してバグを修正しました: _Thread.SetApartmentState(ApartmentState.STA); それが何を意味するのか、なぜそれが機能するのかを理解したいと思います!

8
Javaシングルトンと同期
シングルトンとマルチスレッドに関する私の質問を明確にしてください: マルチスレッド環境でJavaにシングルトンを実装する最良の方法は何ですか? 複数のスレッドgetInstance() が同時にメソッドにアクセスしようとするとどうなりますか? シングルトンを作れgetInstance() synchronizedますか? シングルトンクラスを使用する場合、同期は本当に必要ですか?

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