5

P1 と P2 の 2 つのプロセスがあります。

「R」と呼ばれるこの大きな読み取り専用リソースがあり、P1 と P2 の両方がアクセスできるようにします。

R は単なる「フラットな」バイトのグループではありません。これは、相互にポイントする C++ オブジェクトの集まりです。

P1 と P2 が R の 1 つのコピーのみを共有することをお勧めします。何らかの方法で P1 が R をメモリ内の領域 (同じアドレスで P1 と P2 にマップされている) にロードすると、P1 と P2 は両方とも R 内のオブジェクトに次のようにアクセスできます。 C++ オブジェクト (すべてが読み取り専用であるため、競合状態はありません)。

これを行う方法に精通している人はいますか?

4

4 に答える 4

1

R 内のオブジェクトはどのようにお互いを指しているのですか? 現在のオブジェクトの位置に相対的な場合は、共有メモリを使用できます。この共有メモリがプロセス P1 と P2 の両方の同じアドレス位置にロードされるという保証はありません。そのため、相対のみが機能します。そして、あなたが言ったので、それらのどれもそれを変更しようとせず、それから読み取るだけです。セマフォ/ミューテックスを使用して保護する必要はないと思います。

于 2010-01-18T05:51:20.067 に答える