次の方法で共有


Thread.VolatileRead メソッド (SByte)

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

フィールドの値を読み取ります。この値は、プロセッサの数やプロセッサ キャッシュの状態にかかわらず、コンピュータ内のいずれかのプロセッサによって書き込まれた最新の値です。

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

<CLSCompliant(False)>
Overloads Public Shared Function VolatileRead( _   ByRef address As SByte _) As SByte
[C#]
[CLSCompliant(false)]
public static sbyte VolatileRead(   ref sbyteaddress);
[C++]
[CLSCompliant(false)]
public: static char VolatileRead(char* address);
[JScript]
public
   CLSCompliant(false)
static function VolatileRead(address : SByte) : SByte;

パラメータ

  • address
    読み取られるフィールド。

戻り値

いずれかのプロセッサによってフィールドに書き込まれた最新の値。

解説

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

マルチプロセッサ システムの場合、 VolatileRead は、いずれかのプロセッサがメモリ位置に書き込んだ最後の値を取得します。これには、プロセッサ キャッシュのフラッシュが必要な場合があります。

ユニプロセッサ システムの場合でも、 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.VolatileRead オーバーロードの一覧