Volatile Volatile Volatile Volatile Class

定義

揮発性メモリの操作を実行するためのメソッドを格納します。Contains methods for performing volatile memory operations.

public ref class Volatile abstract sealed
public static class Volatile
type Volatile = class
Public Class Volatile
継承
VolatileVolatileVolatileVolatile

注釈

マルチプロセッサ システムでの volatile 書き込み操作により、メモリ位置に書き込まれた値がすべてのプロセッサをすぐに表示されています。On a multiprocessor system, a volatile write operation ensures that a value written to a memory location is immediately visible to all processors. 揮発性の読み取り操作では、すべてのプロセッサによってメモリ位置に書き込まれた最新の値を取得します。A volatile read operation obtains the very latest value written to a memory location by any processor. これらの操作は、プロセッサのキャッシュは、パフォーマンスに影響する可能性をフラッシュする必要があります。These operations might require flushing processor caches, which can affect performance.

注意

ユニプロセッサ システムでは、揮発性の読み取りと書き込みを確認します値が読み取りまたはメモリに書き込まれます (たとえば、プロセッサのレジスタ) にはキャッシュされません。On a uniprocessor system, volatile reads and writes ensure that a value is read or written to memory and not cached (for example, in a processor register). したがって、これらの操作を使用して、別のスレッドによって、またはハードウェアによって更新可能なフィールドへのアクセスを同期することができます。Thus, you can use these operations to synchronize access to a field that can be updated by another thread or by hardware.

通常のロックではない代わりの同期では、特殊なケースは揮発性メモリ操作です。Volatile memory operations are for special cases of synchronization, where normal locking is not an acceptable alternative. 通常の状況で、c#lockステートメントでは、Visual BasicSyncLockステートメントでは、およびMonitorクラスは、データへのアクセスを同期する最も簡単では、少なくともエラーが発生しやすい方法を提供し、Lazy<T>クラスには、単純な使用して直接なく遅延初期化コードを作成する方法の double-checked locking します。Under normal circumstances, the C# lock statement, the Visual Basic SyncLock statement, and the Monitor class provide the easiest and least error-prone way of synchronizing access to data, and the Lazy<T> class provides a simple way to write lazy initialization code without directly using double-checked locking.

Volatile.ReadVolatile.Writeメソッドの言語でサポートされていない機能を有効にします。The Volatile.Read and Volatile.Write methods enable functionality that is not supported in languages. 次に例を示します。For example:

  • Visual Basic など、一部の言語では、揮発性メモリの操作の概念は認識されません。Some languages, such as Visual Basic, do not recognize the concept of volatile memory operations. Volatileクラスには、このような言語では、その機能が用意されています。The Volatile class provides that functionality in such languages.

    注意

    これらのメソッドのいずれかを呼び出して、1 つのメモリ アクセスのみに影響します。Calling one of these methods affects only a single memory access. フィールドの効果的な同期を提供する、フィールドへのすべてのアクセスを使用する必要がありますVolatile.ReadVolatile.Writeします。To provide effective synchronization for a field, all access to the field must use Volatile.Read and Volatile.Write.

  • C#を使用して、volatileフィールド修飾子は、そのフィールドにすべてのアクセスに、揮発性メモリ操作があるが保証されますが、volatile修飾子は配列の要素に適用できません。In C#, using the volatile modifier on a field guarantees that every access to that field is a volatile memory operation, but the volatile modifier cannot be applied to array elements. Volatile.ReadVolatile.Writeメソッドは、配列の要素で使用できます。The Volatile.Read and Volatile.Write methods can be used on array elements.

メソッド

Read(Boolean) Read(Boolean) Read(Boolean) Read(Boolean)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(Byte) Read(Byte) Read(Byte) Read(Byte)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(Double) Read(Double) Read(Double) Read(Double)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(Int16) Read(Int16) Read(Int16) Read(Int16)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(Int32) Read(Int32) Read(Int32) Read(Int32)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(Int64) Read(Int64) Read(Int64) Read(Int64)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(IntPtr) Read(IntPtr) Read(IntPtr) Read(IntPtr)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(SByte) Read(SByte) Read(SByte) Read(SByte)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(Single) Read(Single) Read(Single) Read(Single)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(UInt16) Read(UInt16) Read(UInt16) Read(UInt16)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(UInt32) Read(UInt32) Read(UInt32) Read(UInt32)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(UInt64) Read(UInt64) Read(UInt64) Read(UInt64)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read(UIntPtr) Read(UIntPtr) Read(UIntPtr) Read(UIntPtr)

指定されたフィールドの値を読み取ります。Reads the value of the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Read<T>(T) Read<T>(T) Read<T>(T) Read<T>(T)

指定したフィールドからオブジェクト参照を読み取ります。Reads the object reference from the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの後に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの前に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears after this method in the code, the processor cannot move it before this method.

Write(Boolean, Boolean) Write(Boolean, Boolean) Write(Boolean, Boolean) Write(Boolean, Boolean)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(Byte, Byte) Write(Byte, Byte) Write(Byte, Byte) Write(Byte, Byte)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(Double, Double) Write(Double, Double) Write(Double, Double) Write(Double, Double)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(Int16, Int16) Write(Int16, Int16) Write(Int16, Int16) Write(Int16, Int16)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(Int32, Int32) Write(Int32, Int32) Write(Int32, Int32) Write(Int32, Int32)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(Int64, Int64) Write(Int64, Int64) Write(Int64, Int64) Write(Int64, Int64)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(IntPtr, IntPtr) Write(IntPtr, IntPtr) Write(IntPtr, IntPtr) Write(IntPtr, IntPtr)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(SByte, SByte) Write(SByte, SByte) Write(SByte, SByte) Write(SByte, SByte)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(Single, Single) Write(Single, Single) Write(Single, Single) Write(Single, Single)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(UInt16, UInt16) Write(UInt16, UInt16) Write(UInt16, UInt16) Write(UInt16, UInt16)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(UInt32, UInt32) Write(UInt32, UInt32) Write(UInt32, UInt32) Write(UInt32, UInt32)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(UInt64, UInt64) Write(UInt64, UInt64) Write(UInt64, UInt64) Write(UInt64, UInt64)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write(UIntPtr, UIntPtr) Write(UIntPtr, UIntPtr) Write(UIntPtr, UIntPtr) Write(UIntPtr, UIntPtr)

指定した値を指定したフィールドに書き込みます。Writes the specified value to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

Write<T>(T, T) Write<T>(T, T) Write<T>(T, T) Write<T>(T, T)

指定したオブジェクト参照を指定したフィールドに書き込みます。Writes the specified object reference to the specified field. システムに必要な場合は、次のようにプロセッサがメモリ操作を並べ替えるのを防ぐメモリ バリアを挿入します。コード内でこのメソッドの前に読み取りまたは書き込みが配置されている場合、プロセッサはそれをこのメソッドの後に移動することはできません。On systems that require it, inserts a memory barrier that prevents the processor from reordering memory operations as follows: If a read or write appears before this method in the code, the processor cannot move it after this method.

適用対象

こちらもご覧ください