次の方法で共有


Thread.VolatileWrite メソッド (UInt32, UInt32)

メモ : この名前空間、クラス、およびメンバは、.NET Framework Version 1.1 だけでサポートされています。

値をフィールドにすぐに書き込みます。値はコンピュータ内のすべてのプロセッサに対して可視になります。

このメソッドは、CLS と互換性がありません。CLS との互換性に関する詳細については 「共通言語仕様の概要」 を参照してください。

<CLSCompliant(False)>
Overloads Public Shared Sub VolatileWrite( _   ByRef address As UInt32, _   ByVal value As UInt32 _)
[C#]
[CLSCompliant(false)]
public static void VolatileWrite(   ref uintaddress,uintvalue);
[C++]
[CLSCompliant(false)]
public: static void VolatileWrite(unsigned int* address,unsigned intvalue);
[JScript]
public
   CLSCompliant(false)
static function VolatileWrite(address : UInt32,value : UInt32);

パラメータ

  • address
    値を書き込むフィールド。
  • value
    書き込む値。

解説

VolatileRead および VolatileWrite は、特別な場合の同期のためにあります。一般的な状況の場合、C# の lock ステートメント、Visual Basic の SyncLock ステートメント、および Monitor クラスは、より使いやすい代替方法です。

マルチプロセッサ システムの場合、 VolatileWrite では、メモリ位置に書き込まれた値がすぐにすべてのプロセッサから可視になることが保証されます。これには、プロセッサ キャッシュのフラッシュが必要な場合があります。

ユニプロセッサ システムの場合でも、 VolatileRead および VolatileWrite では、値がメモリに読み取りまたは書き込みされることが保証されます。プロセッサ レジスタなどにキャッシュされません。したがって、これらを使用することによって、別のスレッドまたはハードウェアが更新することがあるフィールドへのアクセスを同期できます。

このメソッドの呼び出しは、1 回のメモリ アクセスでだけ有効です。フィールドの効果的な同期を提供するためには、フィールドへのすべてのアクセスで VolatileRead または VolatileWrite を使用する必要があります。

メモ   C# の場合、フィールドに volatile 修飾子を使用すると、そのフィールドへのすべてのアクセスで VolatileRead または VolatileWrite が使用されることが保証されます。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, Common Language Infrastructure (CLI) Standard

参照

Thread クラス | Thread メンバ | System.Threading 名前空間 | Thread.VolatileWrite オーバーロードの一覧