原创 線程的同步與互斥(上)

當多個線程同時訪問共享數據時就會有衝突,我們就需要控制訪問數據的線程,解決的辦法在這裏是引入——互斥鎖。 互斥鎖即Mutex,獲得鎖的線程可以完成自己的操作,然後釋放鎖給其他線程,沒有獲得鎖的線程只能等待而不能訪問共享數據。 當我們創建兩

原创 關於atexit,Linux中的t權限,Linux中的FILE結構體

關於“atexit函數”,“Linux中的t權限”,“Linux中的FILE結構體”的介紹 一、關於atexit函數         atexit函數包含在頭文件:#include<stdlib.h>中 ,功 能: 註冊終止函數(即mai

原创 線程間同步與互斥——讀寫鎖

       在編寫多線程時,有些公共數據修改的機會比較少,相對比較寫它們讀的機會返回很多,在讀的過程中往往伴隨查找的操作,中間耗時很長,給這種代碼加鎖反而會降低我們的效率,有一種方法專門處理這種問題,那就是——讀寫鎖。        讀

原创 關於類的6個默認成員函數

關於類的6個默認成員函數 一、前言知識 1.this指針 a.this指針式一個指針,它時時刻刻指向一個實例;b.this指針的類型是:類類型* const;c.this指針並不是對象本身的一部分,不影響sizeof的結果;d.th

原创 task_struct各字段介紹

task_struct各字段介紹    task_struct是Linux中的【進程控制塊PCB結構】的具體數據結構這個結構體包含了一個進程所需的所有信息。下面對task_struct這個結構體 進行各個字段的詳細介紹 1. 調度數據成員

原创 多態中的模型

一、虛表 關於什麼是虛表?我們通過一段代碼來認識一下虛表: #include<iostream> using namespace std; class Base { public: Base()//普通構造函數 { _b = 1

原创 CentOS 6.5下vim的配置

                                           CentOS 6.5版本下vim的配置 1.創建.vim以及.vimrc的文件 2.用su操縱切換到根目錄下再進行下面的操作 3.簡單地

原创 進度條小程序

                                         Linux下的進度條程序 1.回車和換行的區別: 回車用\r表示,換行用\n表示,回車表示回到當前行的開始地方,而不會到下一行,如果是要接着輸出的話

原创 進程調度算法

 一、進程調度概念        進程調度,用戶進程數進程調度一般都多於處理機數、這將導致它們互相爭奪處理機。無論是在批處理系統還是分時系統中,用戶進程數一般都多於處理機數、這將導致它們互相爭奪處理機。 二、兩種佔用CPU的方式

原创 關於繼承

 一、什麼是繼承   繼承機制是面向對象程序設計使代碼可以複用的重要手段,它允許程序員在保持原有類特性的基礎上進行擴展,增加功能。產生的新類,稱爲派生類。   繼承定義的格式:class  Deriveclassname:acess-

原创 線程的同步與互斥——條件變量

線程間的同步與互斥技術,主要以互斥鎖和條件變量爲主,條件變量和互斥鎖的配合使用可以很好的處理對於條件等待的線程間的同步問題。 我們先來認識幾個關於條件變量的函數: 和Mutex的初始化和銷燬類似,pthread_cond_init用來初

原创 數據結構——stack的實現

一、定義        棧stack是一種限定在僅僅只能在尾部進行插入刪除的線性表。允許進行插入刪除的一端叫做棧頂,而另一端就叫做棧底。 二、棧的分類 1. 順序棧:所有操作的時間複雜度均爲O(1); 2. 共享棧:兩個棧共享一段空間向中

原创 管道容量的驗證

 一、管道的容量查看 我的內核版本: 通過ulimit -a可以查看到: pipe size   (512 bytes,-p) 8 通過下面這條命令可以查看到 PIPE_BUFFERS(16),即

原创 模板函數

我們來看看關於模板函數的內容: 先來看看如何編寫一個通用的加法函數: #include<iostream> using namespace std; int Add(const int &left, const int &right)

原创 線程同步與互斥——信號量

關於信號量,我們在前面進程間通信也談到過,今天我們再來看看使用信號量實現線程間的同步與互斥問題。 再來說說什麼是信號量?        信號量的使用主要用來保護共享資源,使該資源在一個時刻只有一個進程(線程)所擁有。在線程中的semaph