线程内核对象的初始记数


Windows核心编程中在创建线程这一块,调用CreateThread函数可以创建一个内核对象。而且此对象的初始使用记数是2.为什么是2呢?不应该是1吗?

内核 C++

abtll 13 years, 2 months ago

这是为了防止在线程停止运行和从CreateThread返回的句柄关闭之前,线程内核对象不会被撤销。
实际上在调用CreateThread创建线程后,系统创建一个线程内核对象,该对象会被该线程和CreateThread的句柄引用,所以初始使用计数为2。而且因为线程的初始化需要时间,为了防止在线程准备好之前就执行它,所以暂停次数为1。

鲜血的呢喃 answered 13 years, 2 months ago

Your Answer