この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19029|答える: 0

[出典] C#はマルチスレッド環境で安全なトラバーサル操作を実行します

[リンクをコピー]
掲載地 2016/10/18 13:55:48 | | |

本記事では、Listを操作オブジェクトとして使用しています
MSDNは公式にListのスレッド安全性声明を出しています:
この種の公開静的メンバーはスレッド安全です。 しかし、どのインスタンスメンバーもスレッド安全であることを保証することはできません。
コレクションが改変されない限り、Listは複数のリーダーを同時にサポートできます。 集合を列挙することは本質的にスレッド安全なプロセスではありません。 列挙が1つ以上の書き込みアクセスと競合する稀なケースでは、スレッドを安全に保つ唯一の方法は列挙期間中ずっとコレクションをロックすることです。 複数のスレッドがコレクションにアクセスして読み書きを行うには、独自の同期を実装する必要があります。
同期しなければ?
もし1つのスレッドが削除操作を実行し、1つのスレッドが通過操作を行うと、通過プロセス中にコレクションが変更され、InvalidOperationException例外が現れます。これにより「コレクションが変更されました」と表示されます。 列挙操作は行えません。
トランバーサルのセキュリティを確保するための同期方法
クリティカルゾーン、ミューテックスはここではスレッド通過プロセスを保護するために使われており、例のコードは以下の通りです。






先の:中国ユニコムの公式アカウントのjssdk署名エラーの解決策
次に:asp.net MVCグローバル例外処理および例外ログ
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com