我正在将日志语句写入文件,并希望在每一行前面加上生成语句的线程 ID。
看来 GetCurrentThreadId 函数总是返回一个数字 <= 9999。所以,我可以假设我总是可以将线程 ID 格式化为四位数字字符串吗?我想保持 id 简短且长度一致,以使日志文件更易于阅读。
GetCurrentThreadId 返回一个显然可能包含大数字的 DWORD。
谢谢。
为什么不把它写成十六进制,那么它会很好地适合 8 位数字呢?
//编辑(不能数!)
GetCurrentThreadID 的 MSDN 页面说:
the thread identifier uniquely identifies the thread throughout the system.
因此,线程 ID 在整个系统中是唯一的,而不仅仅是您的进程,其中很有可能在某个时候返回一个大于 4 位十进制数的值。
简短的回答:没有。
实际上对于 32 位应用程序,(虚拟)限制大约是 2k 线程。对于 64 位应用程序,它大约有 14k 个线程。
阅读这篇文章作为快速参考:http: //blogs.technet.com/b/markrussinovich/archive/2009/07/08/3261309.aspx
这是线程总数的限制(这是主要的内存问题,因为每个线程的堆栈),但是没有任何关于如何分配线程 ID 的规则(如果您的应用程序创建了很多短暂的线程,那么您可能会超出这个假设)。
给它另一个字符空间。它不会杀死你,正如你提到的,线程 ID 是一个 DWORD,因此可能更大。