英語版
このページの英語版を見る
core.volatile
このモジュールは、揮発性操作のためのイントリニックを宣言する。
License:
Authors:
Walter Bright, Ernesto Castellotti
ソース core/volatile.d
- nothrow @nogc @safe ubyte
volatileLoad
(ubyte*ptr
);
nothrow @nogc @safe ushortvolatileLoad
(ushort*ptr
);
nothrow @nogc @safe uintvolatileLoad
(uint*ptr
);
nothrow @nogc @safe ulongvolatileLoad
(ulong*ptr
);
nothrow @nogc @safe voidvolatileStore
(ubyte*ptr
, ubytevalue
);
nothrow @nogc @safe voidvolatileStore
(ushort*ptr
, ushortvalue
);
nothrow @nogc @safe voidvolatileStore
(uint*ptr
, uintvalue
);
nothrow @nogc @safe voidvolatileStore
(ulong*ptr
, ulongvalue
); - ptr で示されるメモリ位置から/への値の読み書き。これらの関数はコンパイラによって認識され、その呼び出しは削除されないことが保証されている。 削除されないことが保証されている。 または同じスレッド内で順序が入れ替わらないことが保証されている。 これらの並べ替え保証は、これらの関数を通して行われる他の操作に関してのみ行われる。 コンパイラは通常のロード/ストアを自由に並べ替えることができる。 コンパイラは、これらの関数を通して行われるロード/ストアに関して、通常のロード/ストアを自由に並べ替えることができる。 これは、メモリマップドI/O(MMIO)を扱うときに便利である。 を扱うときに便利である。 ストアが介在しない連続的なロードが ストアが介在しないシーケンシャルロードが、その場所への外部ストアに起因して、同じ場所から異なる値を取り出すことができる場合などである。 これらの関数は、可能であれば、ロードとストアを単一の操作として行う。一般的には 以下である場合に可能である。 (void*).sizeof ただし、ターゲットによってはより大きな操作をサポートする場合もある。もし が単一の操作として実行できない場合、複数の小さな操作が使用される。 これらはアトミック操作と混同してはならない。アトミック性は保証されない。 アトミック性を保証するものではない。これは、ターゲット上で使用される命令の結果として、偶然に提供されることがある。 の結果としての偶然性によって提供されるかもしれないが、ポータブル・プログラムではこれに依存すべきではない。 さらに、これらの関数はメモリ・フェンスを意味しない。 これらの関数をスレッド間の通信に使うべきではない。 書き込みサイクルや読み出しサイクルが指定されたアドレスで発生することを保証するために使用することはできる。
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku