首頁  >  文章  >  後端開發  >  「句柄」到底是什麼意思啊

「句柄」到底是什麼意思啊

WBOY
WBOY原創
2016-08-04 09:21:463259瀏覽

「句柄」是用來操作某個「物件/資源,也就是:操作某個目標」」的,那麼「句柄」到底是什麼意思啊?釋放句柄又怎麼解釋?

回覆內容:

「句柄」是用來操作某個「物件/資源,也就是:操作某個目標」」的,那麼「句柄」到底是什麼意思啊?釋放句柄又怎麼解釋?

對象就比如你對象,句柄就好比你對象的手機號碼,你不必時時刻刻關心你對像在哪裡幹嘛,你只要有需要的時候打ta電話就能找到,連釋放的時候都可以一個電話說:我們分手了。

句柄英文單字為handle

句柄,就是回調函數。

句柄(handle)在語意上可以理解為把手。用這個把手,可以得到資源。拉著把手等於拿著資源,針對把手操作就等於順藤摸瓜操作了資源。例如:

<code class="php">// 建立资源
$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); </code>

英文裡還有個詞叫love handle指得就是肚子周圍的一圈可以捏來捏去的小贅肉,直譯可以理解為「愛的把手」

類似就是一個通道,一個保持著某種狀態的物件。
一些資源因為性質的原因無法直接操作, 就需要透過句柄去操作。
例如:

  1. 操作資料庫需要身份,所以登入資料庫以後的句柄帶著身份資訊去操作資料庫

  2. 檔案的讀寫有檔案指標位置,讀寫需要控制指標位置, 句柄提供了一個帶有狀態的通道。

  3. 定時器是一種狀態,把定時狀態賦值給句柄, 當觸發了一些事情以後可以去對句柄做處理(取消定時,提前觸發)等。

你的應用程式往往要對物件(資料檔, 自訂的資料結構等)做一些操作, 而句柄可以簡單地理解為是指向這些物件的一個指標. 在你的程式啟動之後, 這些物件在內存中並非是一成不變的, 一方面由於處理器調度等原因, 另一方面現在的操作系統大多基於虛擬內存空間, 在這種情況下, 內存管理器會經常來回移動對象, 以此來滿足當前運行的需要, 那如果說我們尋找對象的方式僅僅是依靠一個指針---- 指向了一個固定的內存地址, 那麼顯然是沒辦法應對不斷變化的實際內存, 所以, 句柄可以說是一個指向指針的指針, 它本身雖然沒有直接指向對象, 但是可以通過它來獲知對像在內存上的變動情況, 然後間接地獲取對象

也就是說, 實際物件在記憶體裡的位址通常是不固定的, 而固定的句柄則描述了相應物件在記憶體裡的位置

在C語言裡有的是指向結構體的指標

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn