1

.net 4 の MemoryMappedFile.CreateNew(mapName, capacity) を使ってメモリマップドファイルを作ってみました

cpython から mapName でこの mmf にアクセスできますか?

以下のようにしてみました。

import mmap
map = mmap.mmap(-1, 0, mapName, 1)

しかし、パラメーターが正しくないことを示す WindowsError [エラー 87] が返されます。

ウィンドウズビスタを使用しています。

4

1 に答える 1

1

私はC#の経験がまったくありませんが、あなたの質問に答えようとします。

CreateNewは、ファイルシステムに存在しないファイルへのマッピングを作成する必要があります。これは決してクロスプラットフォームではないことに注意してください。Windowsでは、mmap.mmapのtagnameパラメーターを使用して、これらのタグ付きマッピングをマップできます。マッピングはファイルによってサポートされていないため、filenoの-1も正しいです。長さが0の場合、マッピング全体が取得されます。問題はアクセスにあります。アクセスパラメータを指定しないと、Windowsでライトスルーマッピングが提供されるという言及があります。これを試してみてください。

他のすべてが失敗した場合は、ファイルベースのメモリマッピングの使用にフォールバックしてみてください。これは、より移植性が高く、はるかに一般的です。C#MemoryMappedFileクラスは、このためのCreateFromFileメソッドを提供します。

于 2010-07-16T11:13:32.337 に答える