官方的解釋總是最權威,有疑問看這裡或者直接看**中的說明: bind_helpers.h.
傳值方式描述
this 或 物件指標
如果物件本身是乙個refcountedthreadsafe, 沒有問題.
如果是個裸指標,應當盡量避免,除非你可以保證它的執行緒安全.
base::unretained
注意:使用這個的前提是有其它同步機制保障物件的生命週期.
如果有其它同步機制保障物件的生命週期,可以使用unretained()傳遞非引用計數的物件.
如果是乙個非引用計數的物件,可以使用unretained()封裝起來.
base::owned
如果是臨時物件,或者擔心任務執行完成後物件可能出現洩露,可以使用owned, 表示由task
持有物件的所有權,在結束時析構它.
base::passed
如果要執行task需要傳入scoped指標,就可以使用它轉換,它也可以避免拷貝,而是類似move語義.
base::constref
類似常量引用,不希望bind過程出現拷貝,就可以使用它.
base::ignoreresult
如果task要呼叫的方法帶有返回值,而你又不關心返回值就可以使用ignoreresult來傳入物件指標.
如果這樣一直將以引用計數來使用物件豈不最為簡單,為什麼要避免引用計數?
chromium智慧型指標指引中的解釋:
還可以參考: 謹慎使用智慧型指標.
關於callback和bind對物件所有權更完整的解釋
Chromium 怎樣安全的使用PostTask
官方的解釋總是最權威。有疑問看這裡或者直接看 中的說明 bind helpers.h.傳值方式描寫敘述 this 或 物件指標 假設物件本身是乙個refcountedthreadsafe,沒有問題 假設是個裸指標,應當盡量避免,除非你能夠保證它的執行緒安全 base unretained 注意 使用...
如何學習Chromium
2 初次看到vs2010裡的幾百個工程,是不是嚇傻了,呵呵,不用著急,飯要一口一口吃 2.1 了解源 的目錄結構,了解chromium的基礎執行機制 2.2 了解依賴的庫,並對部分庫進行初步學習,所謂磨刀不誤砍柴工,這些庫都是很優秀的,值得學習 2.3 從感興趣的地方看起,譬如chromium的ui...
如何安全的使用指標?
指標安全使用的兩條規則 空指標安全使用指標的4條注意事項 一 指標不可以亂用,否則會導致程式崩潰。在使用指標之前,一定要弄清楚兩個問題 一 這個指標指向了哪兒 二 這個指標指向的那個地方是否有效?能否訪問 二 就目前來說,指標只允許指向兩個地方 1 指向變數和陣列 int n int p1 n p1...