疑问:关于使用计数。

yinbeibei 2003-03-26 04:18:31
偶看Windows高级编程指南,
里面提到
“内核知道有多少个进程在使用某一内核对象的原因是每个对象都有一个使用计数。使用计数是所有内核对象都拥有的一个数据成员。当对象被创建时,它的使用计数被设为1。当另一进程也访问该对象时,它的使用计数被加1。当进程终结时,内核会自动地把该进程使用的所有内核对象的使用计数减1。当某一对象的使用计数变成0时,内核就释放该对象。”
我想问的是:
1、“对象被创建时,使用计数被设为1”为什么啊?仅仅是因为这个内核对象必须在一个进程或者线程里创建的吗?而由于这个创建它的进程或者线程的存在所以使用计数就是1么?
2、“当进程终结时,内核会自动地把该进程使用的所有内核对象的使用计数减1。”
这里的内核是指操作系统还是操作系统的Kernel.dll啊?
3、内核、内核对象到底是什么概念?他们之间的关系以及他们和进程和线程的关系到底是怎样的呢?
...全文
21 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinbeibei 2003-03-27
  • 打赏
  • 举报
回复
首先谢谢你的回答。
那么内核指的是操作系统的内核部分么?
内核对象的创建一定要伴随着进程或者线程的产生么?
qhluo02 2003-03-27
  • 打赏
  • 举报
回复
内核对象是一个window句柄当你打开一个内核对象时它将返回一个对象句柄
使用引计数是com接口集使用的一种方式,当你使用一个QueryInterface时(特殊局部变量例外)或创建一个接口时引计数就加一,当你释放一个接口时就把它减一这样com组件才知道何时可以被释放,不会导致你还在使用组件,而它却已被释放的道理(组件可以是进程内和进程外)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧