2

プラットフォームに依存しない方法で (つまり、#if #else マクロ スイッチがないことを意味します)、C++ で現在のインスタンスの一意の整数値の何らかの種類 (プロセス ID かどうかは関係ありません) を取得したいと思います。

2 つのインスタンスが同時に開始される可能性があるため、時間ベースの値は信頼できません。

これを達成する方法はありますか?

編集: グローバルに一意である必要はありません。システム全体で一意である必要があります。

4

4 に答える 4

5

Boostプロセスを見てください。まさにあなたが探しているものかもしれません。ライブラリを含めたくない場合は、機能がどのように実装されているかを確認できます。

于 2011-10-11T18:34:45.710 に答える
1

普遍的に一意の識別子が必要だと思います

于 2011-10-11T18:37:04.040 に答える
1

これはやり過ぎかもしれませんが、QUIDを調べてください。

于 2011-10-11T18:33:23.120 に答える
1

簡単に言うと、答えはノーです。プラットフォーム固有の機能を使用しないわけではありません。

[C++03]

C++ 言語自体は、これを行うメカニズムを提供していません。実際、C++ 自体は、プロセスやプロセス間通信について何も知りません。プラットフォーム固有の機能 (s を意味する手動で作成する#ifdefか、または s を意味する Boost などのクロスプラットフォームの第 3 部分ライブラリのいずれか) を使用しないと、#ifdefこれを行うことはできません。

...と...

【C++11】

C++ 言語にはスレッドの基本的な概念がありますが、プロセス間通信メカニズムを作成するメカニズム (私が見ることができる) を提供していないため、上記が引き続き適用されます。

于 2011-10-11T18:50:54.787 に答える