为什么进程和线程 ID 总是 4 的倍数?
如果您研究下任务管理器中的的进程 ID (PID),则你会发现这样一个规律:它们都是 4 的倍数。
基于 Windows NT 内核的操作系统上,不止是进程 ID,实际上,线程 ID (TID) 也遵守这样的规律:也即它们都是 4 的倍数。这是一个巧合吗?
是的,这只是一个巧合。并且,在您的开发过程中,请勿依赖这个规律,因为它并非公开的编程接口。
举个例子,在 Windows 95 上,进程和线程 ID 就不总是 4 的倍数。作为对比的是,内核句柄的值始终是 4 的倍数,并且这已经编制进了公开的开发文档,所以,在可预见的未来,你始终可以依赖这种设计原则。
进程和线程 ID 是 4 的倍数,这是代码重用的副作用。
分配内核句柄的相同代码也用于分配进程和线程 ID。由于内核句柄是 4 的倍数,因此进程和线程 ID 也是如此。
这是一个实现细节,因此不要编写依赖于它的代码。今天的这篇文章,我只是想要满足你的一丝好奇心,如果有的话。
总结
越底层的代码,就越难改变。16年过去了,即使是在最新的 Windows 11 操作系统上,进程 ID 也遵循着上述 4 的倍数的规律。
所以,我们应该将精力专注于那些很难改变的知识上面,这样在技术日新月异的时代,您不会疲于奔命。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Why are process and thread IDs multiples of four?》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(TopomelBox)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。
相关推荐
- 是时候考虑为你的团队定制AI化的IntelliSense了
- Posted on 02月25日
- 显示字符串如何避免出现方框
- Posted on 07月21日
- 为什么进程最多只能创建 10000 个窗口?
- Posted on 03月28日
- 对话框管理器第三章:创建控件
- Posted on 07月27日
评论已关闭。