操作系统概念

句柄:

句柄的英文是handle,作为一个名词时,是指某个中间媒介,通过这个中间媒介可控制、操作某样东西。
以一个例子说明,door handle是指门把手,通过门把手可以去控制门,但door handle并非door本身,只是一个中间媒介。又比如knife handle是刀柄,通过刀柄可以使用刀。
和door handle类似,我们可以使用file handle去操作file,但file handle并非file本身。这个file handle就被翻译为文件句柄,同理各种资源句柄。

具体到代码实现,handle通常是某个数字标记,通过标记操作资源。这个标记在不同的场合有不同的叫法,有时叫ID,有时叫描述符(descriptor)。在windows平台,就叫各种handle了。

广义来说,指针也是某种 handle,可以操作对象。但实际语境中,指针跟句柄是有区别的。初次接触到 handle (或者 id),很多人会有迷惑,为什么要用 handle,而不直接用指针呢?

  1. 指针作用太强,可做的事情太多。可做的事情越多,就会越危险。接口设计中,功能刚刚好就够了,并非越多权限越好的。
  2. handle 通常只是个整数,实现被隐藏起来,假如直接暴露了指针,也就暴露了指针类型(有时也可以暴露 void* 指针作为某种 handle)。用户看到越多细节,其代码就越有可能依赖这些细节。将来情况有变,但又要兼容用户代码,库内部改起来就更麻烦。
  3. 资源在内部管理,通过 handle 作为中间层,可以有效判断 handle 是否合法,也可以通过权限检查防止某种危险操作。
  4. handle 通常只是个整数,所有的语言都有整数这种类型,但并非所有语言都有指针。接口只出现整数,方便同一实现绑定到各种语言。

https://www.zhihu.com/question/27656256/answer/943130123

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读