HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    detach和dispatch

    發(fā)布時(shí)間:2023-03-19 05:14:03     稿源: 創(chuàng)意嶺    閱讀: 82        問大家

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于detach和dispatch的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    本文目錄:

    detach和dispatch

    一、divide和detach都有分開的意思 我們該怎么理解它們呢

    分離(Detach):用于將群組中的個(gè)別對象從群組中分離出去。divide劃分;除;分開;使產(chǎn)生分歧

    二、remove和detach的區(qū)別

    remove:(綁定事件被移除)

    remove是不會(huì)把匹配的元素從jquery對象上刪除,所以在后面如果再添加該元素的話是可以繼續(xù)使用的,但是該元素綁定的事件、附加的數(shù)據(jù)都會(huì)被移出掉,添加元素后也不能再擁有

    detach:(綁定事件不會(huì)被移除)

    detach是不會(huì)把沛沛的元素從jquery對象上刪除,所以在后面添加該元素的話是可以繼續(xù)使用的,同樣的該元素綁定的事件和附加的元素都沒有被刪除,當(dāng)元素添加回來之后,綁定的事件是可以繼續(xù)使用的,同理還有附加的數(shù)據(jù)

    區(qū)別:

    都是移出dom結(jié)構(gòu),但是綁定的事件和附件的數(shù)據(jù)會(huì)有差別,這里要區(qū)別對待。

    三、android remove和detach的區(qū)別

    有如下的區(qū)別:

    可以看到Fragment比Activity多了幾個(gè)額外的生命周期回調(diào)函數(shù):

    onAttach(Activity);//當(dāng)Activity與Fragment發(fā)生關(guān)聯(lián)時(shí)調(diào)用

    onCreateView(LayoutInflater,ViewGroup,Bundle);//創(chuàng)建該Fragment的視圖

    onActivityCreate(bundle);//當(dāng)Activity的onCreate();方法返回時(shí)調(diào)用

    onDestoryView();//與onCreateView相對應(yīng),當(dāng)改Fragment被移除時(shí)調(diào)用

    onDetach();//與onAttach()相對應(yīng),當(dāng)Fragment與Activity的關(guān)聯(lián)被取消時(shí)調(diào)用

    注意:除了onCreateView,其他的所有方法如果你重寫了,必須調(diào)用父類對于該方法的實(shí)現(xiàn)。

    四、C++中的std:thread的join函數(shù)與detach函數(shù)有什么區(qū)別

    C++中的thread對象通常來說表達(dá)了執(zhí)行的線程(thread of execution),這是一個(gè)OS或者平臺(tái)的概念。

    當(dāng)thread::join()函數(shù)被調(diào)用后,調(diào)用它的線程會(huì)被block,直到線程的執(zhí)行被完成?;旧?,這是一種可以用來知道一個(gè)線程已結(jié)束的機(jī)制。當(dāng)thread::join()返回時(shí),OS的執(zhí)行的線程已經(jīng)完成,C++線程對象可以被銷毀。

    當(dāng)thread::detach()函數(shù)被調(diào)用后,執(zhí)行的線程從線程對象中被分離,已不再被一個(gè)線程對象所表達(dá)--這是兩個(gè)獨(dú)立的事情。C++線程對象可以被銷毀,同時(shí)OS執(zhí)行的線程可以繼續(xù)。如果程序想要知道執(zhí)行的線程何時(shí)結(jié)束,就需要一些其它的機(jī)制。join()函數(shù)在那個(gè)thread對象上不能再被調(diào)用,因?yàn)樗呀?jīng)不再和一個(gè)執(zhí)行的線程相關(guān)聯(lián)。

    去銷毀一個(gè)仍然可以“joinable”的C++線程對象會(huì)被認(rèn)為是一種錯(cuò)誤。為了銷毀一個(gè)C++線程對象,約么join()函數(shù)需要被調(diào)用(并結(jié)束),要么detach()函數(shù)被調(diào)用。如果一個(gè)C++線程對象當(dāng)銷毀時(shí)仍然可以被join,異常會(huì)被拋出。

    C++線程對象不被表達(dá)為執(zhí)行的線程的其它的情況(也就是unjoinable):

    默認(rèn)構(gòu)造的線程對象不表達(dá)為執(zhí)行的線程,所以是unjoinable。

    被移開的線程將不表達(dá)為執(zhí)行的線程,所以是unjoinable。

    在std::thread的析構(gòu)函數(shù)中,std::terminate會(huì)被調(diào)用如果:

    線程沒有被Joined(用t.join())

    線程也沒有被detached(用t.detach())

    因此,你應(yīng)該在執(zhí)行流程到析構(gòu)函數(shù)前總是要么join,要么detach一個(gè)線程。

    當(dāng)一個(gè)程序終止時(shí)(比如main返回),剩下的在后臺(tái)的detached線程執(zhí)行不會(huì)再等待;相反它們的執(zhí)行會(huì)被掛起并且它們的本地線程對象會(huì)被銷毀。

    關(guān)鍵地,這意味著這些線程的棧不是完好無損的,因此一些析構(gòu)函數(shù)不會(huì)被執(zhí)行。依賴于這些行為,一些析構(gòu)函數(shù)假象會(huì)被承擔(dān),這可能是一種壞情形,好像程序已經(jīng)Crash或者已經(jīng)被kill。希望OS會(huì)釋放加在這些文件上的鎖。Depending

    on the actions those destructors were supposed to undertake, this might

    be as bad a situation as

    if the program had crashed or had been killed. Hopefully the OS will

    release the locks on files, etc... but you could have corrupted shared

    memory, half-written files, and the like.

    所以,你應(yīng)該使用join還是detached?

    使用join

    除非你需要更靈活并且想要獨(dú)立地提供一種同步機(jī)制來等待線程完成,在這種情況下你應(yīng)該使用detach

    以上就是關(guān)于detach和dispatch相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    vscode安裝導(dǎo)入本地插件包(vscode導(dǎo)入已下載好的插件包)

    華為retaildemo(華為retaildemo下載安裝教程)

    campus-wide(campus-wide discussion)

    包頭專業(yè)住宅景觀設(shè)計(jì)(包頭專業(yè)住宅景觀設(shè)計(jì)師招聘)

    拼多多詳情頁最佳尺寸(拼多多詳情頁最佳尺寸是多大)