Qt を使用してファイルをメモリ ページにマップしています
QFile::map (qint64 offset, qint64 size, MemoryMapFlags flags = NoOptions)
基本的に、これはmmap
システム関数呼び出しである必要があります。ディスク上のファイルが切り捨てられている場合でも、返されたメモリにアクセスできることをどのように保証できるのだろうか。ディスクファイルから読み取り、エラーを適切に処理したいので、これが必要なようです
if (offset > m_file.size())
// throw an error...
if (m_mappedFile != NULL) return m_mappedFile + offset;
明らかに、これには競合状態が含まれます。これは、チェックとマッピングへのアクセスの間でファイル サイズが変化する可能性があるためです。どうすればこれを回避できますか?