關於執行非同步任務需要注意的幾點

2021-10-09 01:18:34 字數 519 閱讀 8691

非同步任務的場景現在已經越來越多,特別是底層的庫基本都有自己的執行緒。方便高效的同時也帶來很多問題,執行緒過多,已經多執行緒下的問題。在與c++結合的場景中要特別注意的是非同步任務在物件銷毀前一定要銷毀,或者能夠保證在非同步任務執行結束前當前物件存在。解決方法:

在物件析構函式等待非同步任務執行完畢,或者停止執行緒後,等待執行緒退出。

在物件析構後保證所有的非同步任務再不會訪問到當前物件的資料(weak_from_this)

對於普通的執行緒模型,第一種方法最為使用,在析構函式中停止執行緒,並且等待執行緒退出

對於非同步任務模型,執行緒也不屬於當前物件管理範圍的時候用第一種方法,就要等待所有包含當前物件的非同步任務執行完成後再銷毀當前物件。可以借助於std::enable_shared_from_this,將當前物件託管給只能指標。建立任務時包含當前物件的智慧型指標,保證在任務執行前物件不會被析構。當然用第二種方法會更妥當,非同步任務捕獲當前物件弱引用指標,這樣就算物件銷毀還有一部任務執行,只要用弱引用指標判斷當前物件不存在就不往下執行就可以。不訪問當前物件的資料也就不會引起記憶體訪問問題。

關於OU重定向需要注意的幾點

1 什麼是ou重定向 就是在計算機或賬戶加入域的時候使其不儲存在ad預設的位置 2 什麼時候需要做ou重定向 擴充套件ad架構比如安裝exchange或lync的時候,exchange會自動建立安全組ou並做重定向,lync不會,它需要手動建立和做重定向 需要將改變域賬號或計算機的ad儲存位置 3 ...

學習程式設計需要注意的幾點

1 不要死記硬背語法 程式開發的語法 規範特別多,不可能全記下來,只要知道有這麼乙個功能即可,需要的時候再翻書或查詢幫助。這樣省時省力,可以將更多的時間和精力用在技術的提高上。2 多動手,多練習 死讀書是成不了程式設計高手的!只有多練習,多上機編寫程式,才能在實踐中提高對程式設計的認識。3 遇到問題...

Object c block需要注意的幾點問題

摘自 date 2015 12 4 1.block定義 1 說明 a.block是oc中的一種資料型別,在ios開發中被廣泛使用 b.是block的特有標記 c.block的實現 包含在 之間 d.大多情況下,以內聯inline函式的方式被定義和使用 e.block與c語言的函式指標有些相似,但使用...