1

私は多くのプロジェクトを含むソリューションに取り組んでいます。ユーティリティ メソッドをホストするプロジェクトがあります。他のすべてのプロジェクトは、このプロジェクト メソッドを使用しています。

静的メソッドが複数のプロジェクトから同時に呼び出されても大丈夫ですか?

また、私のメソッドの 1 つで、 1 つのThread.Sleep()プロジェクトがこのメソッドをスリープ状態で呼び出し、別のプロジェクトをスリープ状態で同時に呼び出すとどうなるかを行うためのオプションのパラメーターがあります。

私はこの構造に本当に混乱しています!

4

2 に答える 2

3

静的メソッドが複数のプロジェクトから同時に呼び出されても大丈夫ですか?

まあ、それはメソッドが何をするかによって異なります。同時に複数のスレッドから呼び出しても問題ないことを確認する責任を負う必要があります(呼び出し元が同じプロジェクトにいるかどうかは、ほとんどの場合、まったく関係ありません。)

危険な方法で共有状態を変更しない限り (List<T>同期せずに に追加するなど)、問題はありません。それはすべてあなたが何をしているかに依存します。

各呼び出しは、個別のパラメーターとローカル変数のセットを持つという点で独立しています。これらのパラメーターの一部が他のスレッドから見えるオブジェクトを参照している場合、それは別の問題です...しかし、あなたの質問からはわかりません。

ここでの使用はThread.Sleepほとんど無関係であることに注意してください。確かに、何らかの同期がある場合 (たとえば を介してlock)、ロックを所有するスレッドがスリープ状態になるのはかなり不快です...

于 2012-11-21T12:50:42.763 に答える
1

関数がThread Sleep と言うように、現在の呼び出しスレッドは呼び出しの間スリープします。この関数を呼び出すスレッドが複数ある場合、それらはすべてスリープします。すべてのプロジェクトが同じスレッドから実行される場合、この関数が同時に呼び出されることはなく、順次スリープします。

于 2012-11-21T12:50:43.543 に答える