2009-05-07 14 views
0

ThreadPool.QueueUserWorkItemでスレッドを生成し、そのスレッドがスレッドセーフではないオブジェクトを参照しない場合、スレッドセーフではないオブジェクトが危険にさらされますか?キューイングスレッドは、同じクラスのスレッドセーフではないオブジェクトに影響を与えますか?

[編集] スレッドセーフではないオブジェクトは、プログラマブルロジックコントローラのサードパーティ製インターフェイスであり、同時接続または同時実行サポートを開く機能がありません。

私は、そのオブジェクトへの参照と同じクラスのスレッドをキューイングすることによって、私が実現しなかった方法でスレッドの安全性をどうにか損なうことはないと確信していたと思います。

答えて

2

スレッドは魔法ではありません。彼らが何らかのデータを参照していなければ、それは影響を与えません。


EDIT:あなたは新しいスレッドの作成を監視し、QueueUserWorkItemを監視し、モニターはこれらの非スレッドセーフなオブジェクトを変更する場合は、[はい、インパクトがありますコードを持っている場合。

それ以外の場合は、

0

新しいスレッドがスレッドセーフではないオブジェクトを直接的または間接的に参照しない限り、スレッドに影響しません。

小さな技術的ポイント。 ThreadPool.QueueUserWorkItemを呼び出しても必ずしも新しいスレッドが生成されるとは限りません。代わりに、提供されたデリゲートが別のスレッドで実行されるようにします。これにより、スレッドが作成される可能性があります。または、すでにスレッドプールに割り当てられている既存のスレッドを使用する可能性が高くなります。

関連する問題