句柄是什么?

参考:https://www.zhihu.com/question/27656256

 

1.

句柄就是个数字,一般和当前系统下的整数的位数一样,比如32bit系统下就是4个字节。 这个数字是一个对象的唯一标示,和对象一一对应。 这个对象可以是一个块内存,一个资源,或者一个服务的context(如 socket,thread)等等。 这个数字的来源可以有很多中,只要能保证和它代表的对象保持唯一对应就可以,比如可以用内存地址,也可以用句柄表的序号,或者干脆用一个自增ID,再或者用以上的值去异或一个常数。

传统上操作系统内核和系统服务API都是 C 语言接口的,但是其内部设计理念上又是OO的,所以有对象概念却没有对应的语言语法支持。 句柄的作用就是在 C 语言环境下代替 C++ 的对象指针来用的。 创建句柄就是构造,销毁句柄就是析构,用句柄调用函数相当于传入this指针。 如果有系统API是  C++ 接口的,那么就没有句柄了,而是某个接口指针,IXXXPtr之类的,比如Windows的com ptr。

作者:姚冬 链接:https://www.zhihu.com/question/27656256/answer/37556901 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

2.

最早的windows开发书籍,handle是被翻译成“把手”的。虽然不好听,但是个人认为相当传神。

1.虽然你握住的只是把手,却能拉动整扇门,而且你根本不用在意那门长什么样子

2.一扇门如果有多个把手,被不同的人(进程)握住,门往哪儿走就不好说了

 

3.

我记得似乎只有windows上有「句柄」这个名词吧?

这东西就是一个数字,作用嘛,就和你去饭店吃饭要排队,前台小姐给你分配了一个编号一样,然后她可以通过编号找到你。

在操作系统或者某种其他编程系统中,句柄就是这样的一个编号,用来对各种奇奇怪怪的东西编号,系统对你来说是一个黑箱,你只能通过这个编号向系统要东西。 所以说这种问题嘛。。你只要实现一个类似的系统就懂了

作者:萧井陌 链接:https://www.zhihu.com/question/27656256/answer/37509247 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

原文链接: https://www.cnblogs.com/MCSFX/p/10954828.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    句柄是什么?

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/295948

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午5:22
下一篇 2023年2月15日 下午5:23

相关推荐