欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

“句柄”到底是什么意思啊

程序员文章站 2022-05-03 16:17:43
...
“句柄”是用来操作某个“对象/资源,即:操作某个目标””的,那么“句柄”到底是什么意思啊?释放句柄又怎么解释?

回复内容:

“句柄”是用来操作某个“对象/资源,即:操作某个目标””的,那么“句柄”到底是什么意思啊?释放句柄又怎么解释?

对象就比如你对象,句柄就好比你对象的手机号码,你不必时时刻刻关心你对象在哪里干嘛,你只要有需要的时候打ta电话就能找到,连释放的时候都可以一个电话说:我们分手了。

句柄英文单词为handle

句柄,就是回调函数。

句柄(handle)在语义上可以理解为把手。用这个把手,可以得到资源。拉着把手就等于拿着资源,针对把手操作就等于顺藤摸瓜操作了资源。例如:

// 建立资源
$ch = curl_init();
// 根据句柄操作资源
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
// 根据句柄执行这个资源
$head = curl_exec($ch); 

英语里还有个词叫love handle指得就是肚子周围的一圈可以捏来捏去的小赘肉,直译可以理解为“爱的把手”

类似就是一个通道,一个保持着某种状态的对象。
一些资源因为性质的原因无法被直接操作, 就需要通过句柄去操作。
比如:

  1. 操作数据库需要身份,所以登录数据库以后的句柄带着身份信息去操作数据库

  2. 文件的读写有文件指针位置,读写需要控制指针位置, 句柄提供了一个带状态的通道。

  3. 定时器是一种状态,把定时状态赋值给句柄, 当触发了一些事情以后可以去对句柄做处理(取消定时,提前触发)等。

你的应用程序往往要对对象(数据文件, 自定义的数据结构等)做一些操作, 而句柄可以简单地理解为是指向这些对象的一个指针. 在你的程序启动之后, 这些对象在内存中并非是一成不变的, 一方面由于处理器调度等原因, 另一方面现在的操作系统大多基于虚拟内存空间, 在这种情况下, 内存管理器会经常来回移动对象, 以此来满足当前运行的需要, 那如果说我们寻找对象的方式仅仅是依靠一个指针 ---- 指向了一个固定的内存地址, 那么显然是没办法应对不断变化的实际内存, 所以, 句柄可以说是一个指向指针的指针, 它本身虽然没有直接指向对象, 但是可以通过它来获知对象在内存上的变动情况, 然后间接地获取对象

也就是说, 实际对象在内存里的地址通常是不固定的, 而固定的句柄则描述了相应对象在内存里的位置

在C语言里有的是指向结构体的指针

相关标签: php