On Tue, Apr 04, 2006 at 11:17:49PM -0400, Tom Lane wrote: > "Qingqing Zhou" <[EMAIL PROTECTED]> writes: > > "Tom Lane" <[EMAIL PROTECTED]> wrote > >> Redmond crowd should be able to figure out that recycling process IDs > >> instantly would be a stupid idea...) > > Can you explain more of this? IMHO, if we rely on feature like this, the > > difference is unstable-every-day vs. unstable-every-year. > The mere existence of the kill() primitive should bring to mind reasons > why it's a bad idea.
CreateProcess - "The process is assigned a process identifier. The identifier is valid until the process terminates. It can be used to identify the process, or specified in the OpenProcess function to open a handle to the process. The initial thread in the process is also assigned a thread identifier. ..." TerminateProcess - "Terminates the specified process and all of its threads." TerminateProcess takes a HANDLE, not a process identifier. Yes, they provide the "kill" primitive, but only as a compatibility measure. A "good" Windows process, should maintain a HANDLE to the process, and kill the process using the HANDLE. This way, there is no race. The HANDLE is also how you wait for the process to terminate normally. I prefer the "Redmond" way, in that I find UNIX's use of integer identifiers to be encouraging of race conditions. UNIX requires hacks like minimizing PID reuse, because UNIX is the one that is broken. :-) Cheers, mark -- [EMAIL PROTECTED] / [EMAIL PROTECTED] / [EMAIL PROTECTED] __________________________ . . _ ._ . . .__ . . ._. .__ . . . .__ | Neighbourhood Coder |\/| |_| |_| |/ |_ |\/| | |_ | |/ |_ | | | | | | \ | \ |__ . | | .|. |__ |__ | \ |__ | Ottawa, Ontario, Canada One ring to rule them all, one ring to find them, one ring to bring them all and in the darkness bind them... http://mark.mielke.cc/ ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend