通常、このように、グローバルに使用されて変数に.cppファイルの結果に変数を使用して:.cppファイルは静的ライブラリと複数の共有ライブラリ(DLL)に置かれたときC++でprocess-global変数を実装する方法は?
.h file:
extern int myGlobal;
void work();
.cpp file:
int myGlobal = 42;
void work(){ myGlobal++; }
か実行可能なリンクを静的ライブラリと比較すると、それぞれにmyGlobal
という独自のコピーがあります。 work()は変数の独自のバージョンを変更します。
私の質問は、プロセス固有の変数またはその変数へのポインタを取得する方法はありますか?スレッド全体の変数に対して、スレッドローカルストレージと同様のものがあります。プラットフォームに依存しない必要はありません。 Win32で動作する場合のボーナスポイント:
「プロセス全体」という質問は、複数のプロセスではありません。同じプロセス内の共有メモリは恐らく少し残酷です。 –
あなたはそうです。しかし、それは動作し、それを使用することは難しいことではありません。それではなぜですか? :) –
注意:boost :: interprocessには落とし穴や問題がたくさんあります。たとえば、いくつかのプラットフォームでは、待ち状態のようなものでビジー状態になる傾向があります。あなたが使用しているブーストコードを必ず読んでください。 –