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

    detach和dispatch

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

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

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

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

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

    本文目錄:

    detach和dispatch

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

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

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

    remove:(綁定事件被移除)

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

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

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

    區(qū)別:

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

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

    有如下的區(qū)別:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


    推薦閱讀:

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

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

    campus-wide(campus-wide discussion)

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

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