SharedMemory (共有メモリセグメント)

  1. 文法
  2. 詳細

1. 文法

メンバ型
クラス
メンバ所有者
global

2. 詳細

共有メモリセグメントを表すクラスです。共有メモリを介して、異なるプロセス間で相互にデータを読み書きすることができます。このクラスのインターフェースは、System V IPCの共有メモリモデル(shmget〜shmat〜shmdt〜shmctl(IPC_RMID))を参考にしました。

※現バージョンでは、2GBを超えるセグメントは扱えません。

3. 例

Plugins.link("util_system.dll");

// セグメントを識別するためのキー
var key = 'TVP2_SHARED_MEMORY';
// 割り当てるサイズ
var sizeAlloc = 256;
// 読み書きするサイズ
var sizeRW = 32;
// 書き込むデータ
var oct = <% 99 aa bb cc dd ee ff aa %>;

// インスタンスを作成
var shm = new SharedMemory();
// セグメント作成
var rv = shm.get(key, sizeAlloc);
// 戻り値で新規か既存かがわかる
System.inform(rv ? '新規' : '既存');

// 読み書き両用で付加
shm.attach(SharedMemory.ACCESS_READ_WRITE);

// データを書き込む
shm.poke(0, sizeRW, oct);
// データを読み込む
var r = shm.peek(0, sizeRW);

// セグメントを分離する
shm.detach();
// セグメントを解放する
shm.free();