私はbool Method(Myobject Obj)
という特定のメソッドを1つ持っており、私は彼がParallelFor()
ループにいる間に電話したいと思っています。実際にそれを行うことはできますか?これはスレッドセーフなものなのでしょうか?このようなメソッドを呼び出すのは間違っているように感じます。ParallelForでの呼び出し方法
-3
A
答えて
2
スレッドの安全性は、常にコンテキストまたは特定のケースに基づいて決定されます。 は、あなたがこれを持っていること、のは、言ってみましょう:
public static bool Even(int i)
{
return num % 2 == 0; //true: even, false: odd
}
public static void ThreadSafe()
{
bool[] arr = new bool[333];
Parallel.For(0, arr.Length, index =>
{
arr[index] = Even(index);
});
}
は、今ではスレッドセーフですか?はい。 配列の各インデックスは、arrの1つの関連インデックスに値を割り当てています。 これは、並行して行うことができます。 今はどうですか?
public static void ThreadUnsafe()
{
bool[] arr = new bool[333];
Parallel.For(0, arr.Length, index =>
{
arr[index] = Even(index);
int index2 = (index + 1) < arr.Length ? (index + 1) : index;
arr[index2] = Even(index);
});
}
与えられたインデックスでは、arrに2つのインデックスを割り当てることができ、他のスレッドも同様にそれに書き込むことができます。スレッドセーフではありませんが、結果はどうなりますか?
これで、メソッドが使用されているコンテキストがスレッドの安全性を判断できることが分かりました。
スレッドセーフには複数のタイプがあります。
+1
ありがとうございます、これは私が求めていることです。今、そのような種類の安全について読んでいます。 – BlauWave
関連する問題
- 1. 電話の呼び出し画面の呼び出し方法
- 2. jQueryで.NET WSDL呼び出しを呼び出す方法Javascript?
- 3. Xamarin:通知呼び出しでIValueConverterを呼び出す方法
- 4. コンストラクタの呼び出し方法とオブジェクトの呼び出し方法
- 5. 呼び出し方法
- 6. 呼び出し方法Ruby1.9
- 7. バックグラウンドスレッドでの呼び出し方法
- 8. 呼び出し可能<Object>呼び出し方法
- 9. 呼び出し方法はWPFで
- 10. Ajax呼び出しでコントローラが呼び出されない呼び出し方法
- 11. C#でメソッド/呼び出しを別のメソッドから呼び出す方法は?
- 12. dateutil.rrule.rruleの__str__メソッドの呼び出し方法
- 13. このセレクタの呼び出し方法
- 14. パラメータを使用した非同期呼び出しの呼び出し方法
- 15. cplexソルバーの呼び出し方法?
- 16. C#ボタンの呼び出し方法
- 17. legendPathの呼び出し方法
- 18. javascript関数の呼び出し方法
- 19. jQuery.sheet.SUM()メソッドの呼び出し方法は?
- 20. SSISパッケージの呼び出し方法
- 21. JSONデータの呼び出し方法 "@"
- 22. アクションフォームの呼び出し方法PHP
- 23. Javaパッケージの呼び出し方法
- 24. メイン関数の呼び出し方法
- 25. コンポーネントからの呼び出し方法
- 26. アセンブラの呼び出し方法
- 27. CATIA:CATCoPlyExplodeCmdの呼び出し方法
- 28. WCFサービスの呼び出し方法
- 29. GetFolder(IID_ExplorerPaneVisibility)の呼び出し方法
- 30. メンバオブジェクトからの呼び出し方法
もちろんこれを行うことができます。スレッドセーフであるかどうかは、メソッドが何をするかによって異なります。 –
試しましたか?あなたのコードを共有できますか? '方法'はやりましたか? – Icepickle
@Icepickleいいえ、私はまだテストしようとしていませんが、オブジェクト 'Obj'が他の' Obj'と並行プロセスかそれに類似したものと "ミックス"できるかどうかを知りたかっただけです。私は、この 'Method'の中ではスレッドが交差しているのではなく、' Obj'の処理しかしていないと言います。 – BlauWave