Raymond Chen 2008年2月18日
在基于Windows NT的操作系统中,进程和线程ID总是4的倍数。这只是巧合吗?
是的,这只是巧合,你不应该依赖这一点,因为它不是编程约定的一部分。例如,Windows 95的进程和线程ID并不总是4的倍数。(相比之下,内核句柄始终是4的倍数,这是规范的一部分,并且在可预见的未来将得到保证。)
进程和线程ID是4的倍数,这是代码重用的一个副作用。分配内核句柄的相同代码也用于分配进程和线程ID。由于内核句柄是4的倍数,因此进程和线程ID也是。这是一个实现细节,所以不要编写依赖于此的代码。我告诉你这些只是为了满足你的好奇心。