究竟什么是"处理"?

kof*_*cii 7 terminology handle

我经常听说过"手柄",究竟是什么?

编辑:例如我听说过:windows处理事件处理文件句柄

等等.那些东西是一样的吗?或者他们是一些抽象的术语?

Adr*_*thy 7

句柄是引用OS或库拥有的对象的间接方式.当操作系统或库拥有一个对象但希望让客户端引用它时,它可以提供对该对象的引用,称为句柄.

手柄可以以不同方式实施.通常它们不是C++或C#意义上的引用.它们通常是转换为某种opaque类型的指针,或者它们可能是(或包含)操作系统或库所拥有的对象表的索引.

例如,在Windows中,如果创建窗口,操作系统会创建一个表示窗口的对象,但它不会返回指向该对象的指针.相反,它返回一个窗口句柄,它提供了一个额外的间接层.当您在另一个OS调用中返回窗口句柄时,操作系统根据句柄知道要使用哪个窗口对象.这可以防止您的代码直接访问窗口对象.

额外的间接层允许操作系统或库执行诸如移动对象,引用计数对象以及通常控制对象发生的事情之类的操作.与PIMPL惯用法一样,实现可能会完全改变,同时仍然保留原始API,因此不会强制客户端重新编译.如果您尝试为使用C等过程语言编写的客户端提供非面向对象的API,那么它尤其有用.


mae*_*ics 5

"句柄"是对资源的引用的另一个名称,该资源由程序员显式管理而不是由运行时自动管理.