1

ログ ステートメントをファイルに書き込んでおり、ステートメントを生成したスレッド ID を各行の先頭に追加したいと考えています。

GetCurrentThreadId 関数は常に <= 9999 の数値を返すようです。では、スレッド ID を常に 4 桁の文字列にフォーマットできると仮定できますか? ログファイルを読みやすくするために、ID を短く、一貫した長さに保ちたいと思います。

GetCurrentThreadId は、明らかに大きな数字を含む可能性のある DWORD を返します。

ありがとう。

4

4 に答える 4

3

GetCurrentThreadIDのMSDNページには次のように書かれています。

the thread identifier uniquely identifies the thread throughout the system.

したがって、スレッドIDは、プロセスだけでなくシステム全体で一意であり、4桁の10進数より大きい値を返す可能性があります。

于 2012-06-14T12:57:28.520 に答える
3

8桁にうまく収まる16進数として記述しないのはなぜですか?

// 編集 (カウントできません!)

于 2012-06-14T12:54:17.437 に答える
2

短い答え:いいえ

実際、32 ビット アプリケーションの場合、(仮想) 制限は約 2k スレッドです。64 ビット アプリケーションの場合、約 14k スレッドです。

この記事をクイック リファレンスとしてお読みください: http://blogs.technet.com/b/markrussinovich/archive/2009/07/08/3261309.aspx

これはスレッドの総数の制限です (各スレッドのスタックが原因でメモリの問題が主な原因です) が、スレッド ID の割り当て方法に関する規則はありません (アプリケーションが短時間のスレッドを多数作成する場合は、この仮定をオーバーフローする可能性があります)

于 2012-06-14T12:56:02.217 に答える
1

別の文字スペースを与えます。それはあなたを殺すことはなく、あなたが言及したように、スレッドIDはDWORDであるため、より大きくなる可能性があります.

于 2012-06-14T12:58:43.800 に答える