プラットフォームに依存しない方法で (つまり、#if #else マクロ スイッチがないことを意味します)、C++ で現在のインスタンスの一意の整数値の何らかの種類 (プロセス ID かどうかは関係ありません) を取得したいと思います。
2 つのインスタンスが同時に開始される可能性があるため、時間ベースの値は信頼できません。
これを達成する方法はありますか?
編集: グローバルに一意である必要はありません。システム全体で一意である必要があります。
プラットフォームに依存しない方法で (つまり、#if #else マクロ スイッチがないことを意味します)、C++ で現在のインスタンスの一意の整数値の何らかの種類 (プロセス ID かどうかは関係ありません) を取得したいと思います。
2 つのインスタンスが同時に開始される可能性があるため、時間ベースの値は信頼できません。
これを達成する方法はありますか?
編集: グローバルに一意である必要はありません。システム全体で一意である必要があります。
Boostプロセスを見てください。まさにあなたが探しているものかもしれません。ライブラリを含めたくない場合は、機能がどのように実装されているかを確認できます。
普遍的に一意の識別子が必要だと思います
これはやり過ぎかもしれませんが、QUIDを調べてください。
簡単に言うと、答えはノーです。プラットフォーム固有の機能を使用しないわけではありません。
C++ 言語自体は、これを行うメカニズムを提供していません。実際、C++ 自体は、プロセスやプロセス間通信について何も知りません。プラットフォーム固有の機能 (s を意味する手動で作成する#ifdef
か、または s を意味する Boost などのクロスプラットフォームの第 3 部分ライブラリのいずれか) を使用しないと、#ifdef
これを行うことはできません。
...と...
C++ 言語にはスレッドの基本的な概念がありますが、プロセス間通信メカニズムを作成するメカニズム (私が見ることができる) を提供していないため、上記が引き続き適用されます。