原创 Linux C++ 程序佔cpu%問題排查

原文鏈接:https://blog.csdn.net/lmb1612977696/article/details/89404019 inux C++ 程序佔cpu%問題排查 緣起 對一個服務(r

原创 在Linux上分析死鎖問題的簡單方法

原文鏈接:http://blog.chinaunix.net/uid-30343738-id-5757210.html 死鎖 (deallocks): 是指兩個或兩個以上的進程(線程)在執行過程

原创 Libnids讀書筆記

原文鏈接:https://www.cnblogs.com/rainbowzc/p/3600259.html?utm_source=tuicool 一、當日工作(或學習)內容及進展情況(以條目式陳

原创 TCP的三次握手與四次揮手理解及面試題(很全面)

原文鏈接:https://blog.csdn.net/qq_38950316/article/details/81087809 本文經過借鑑書籍資料、他人博客總結出的知識點,歡迎提問     

原创 第5章 C++內存模型和原子類型操作(C++併發編程實戰)

5.2 C++中的原子操作和原子類型 原子操作時不可分割的操作。在系統的所有線程中,你是不可能觀察到原子操作完成了一半這種情況;它要麼做了,要麼就沒有做,只有這兩種可能。如果從對象讀取值的加載操作時原子的,那麼對這個對象的所有修改操作也是

原创 4.4 使用同步操作簡化代碼

4.4.1 使用期望的函數化編程 術語函數化編程(functional programming)引用於一種編程方式,這種方式中的函數結果只依賴於傳入函數的參數,並不依賴外部狀態。 函數化編程的好處,並不限於那些將純粹作爲默認方式的語言。C

原创 4.3 限定等待時間(C++併發編程實戰)

兩種指定的超時方式:一種是時延的超時方式——需要指定一段時間(例如30毫秒);第二種是絕對超時方式——指定一個時間點(例如:協調時間[UTC]17:30:15.045987023,2011年11月30號)。多數等待函數提供變量,對兩種超時

原创 4.2 使用期望等待一次性事件(C++併發編程實戰)

期望(future):當一個線程需要等待一個特定的一次性事件,在某種程度上來說它就需要知道這個時間的未來表現形式。之後,這個線程會週期性(較短的)的等待和檢查,事件是否觸發;在檢查期間也會執行其他的任務。另外,在等待期間它可以先執行另外一

原创 第4章:同步併發操作(C++併發編程實戰)

4.1.1等待條件達成 C++標準對條件變量有兩套實現:std::condition_variable和std::condition_variable_any。包含在<condition_variable>頭文件聲明中。兩者都需要與一個互

原创 3.3 保護共享數據的替代設施(C++併發編程實戰)

3.3.1 保護共享數據的初始化過程 互斥量是最通用的機制,但其並非保護共享數據的唯一方式。這裏有許多替代方案可以在特定的情況下,提供更合適的保護。 延遲初始化在單線程中很常見——每一個操作都需要先對源進行檢查,爲了瞭解數據是否被初始化,

原创 第3章:線程間共享數據(C++併發編程實戰)

3.2使用互斥量保護共享數據 C++通過實例化std::mutex創建互斥量,通過調用成員函數lock()/unlock()來進行加解鎖。不過不推薦直接調用成員函數,因爲必須記住在每一個函數的出口都要調用unlock(),包括異常。C++

原创 2.3轉移線程的所有權(C++併發編程實戰)

C++標準庫中很多資源佔有(resource-owning)類型,比如std::ifstream,std::unique_ptr還有std::thread都可以移動,但不可以拷貝 std::thread支持移動,這意味着線程的所有權可以在

原创 條款07:爲多態基類聲明virtual析構函數

C++明確指出:當derived對象經由一個base class指針被刪除,而該base class帶有一個non-virtual析構函數,其結構未定義的——實際執行時通常發生的是對象的derived成分沒被銷燬。 這種情況下就只有bas

原创 條款15:在資源管理類中提供對原始資源的訪問

對於資源管理類而言,有時候你需要處理原始資源(raw resources)的訪問。當你使用智能指針如auto_ptr或tr1::shared_ptr保存資源類的時候。當你需要訪問智能指針指向的原始資源的時候,你有顯示轉換和隱式轉換兩個方法

原创 條款13:以對象管理資源

·所謂資源就是,一旦用了它,將來必須還給系統。C++中最常見的資源就是動態內存分配,其他資源包括文件描述器、互斥鎖、圖形界面中的字型和筆刷、數據庫連接、以及網絡sockets。 對於手工釋放資源,ro爲了容易發生某些錯誤,會資源泄露,我們