原创 linux I/O複用--------epoll

epoll是linux特有的I/O複用函數。它在實現和使用上與select,poll有很大的差異。首先,epoll使用一組函數來完成任務,而不只是單個函數,其次,epoll把用戶關心的文件描述符上的事件都放在內核裏的一個時間表中,而無需像

原创 linux I/O複用-------select

select系統調用的用途是:在一段時間內,監聽當用戶感興趣的文件描述符上的可讀,可寫,可異常等事件。 《一》select系統調用原型: Int select(int nfds,fd_set* readfds,fd_set* writef

原创 進程間的通訊---------共享內存

《一》共享內存的實現原理: 共享內存區域是多個進程共享的一部分物理內存,如果多個進程都把該內存區域映射到自己的虛擬內存地址空間,則這些進程就都可以直接訪問這篇共享內存區域,從而可以通過該區域進行進程間的通訊 ,一個進程向共享內存中寫入了數

原创 進程間的通訊---------信號

信號是一種進程間消息通知機制,傳遞指定能夠的信號值,接收信號的進程需要提前註冊信號的相應方式(默認 忽略  自定義) 《一》發送信號: int kill(pid_t pid ,int sigtype);  Pid:指定信號發送的對象  S

原创 linux I/O複用---------poll

poll系統調用和select類似,也是在指定的事件內輪詢一定數量的文件描述符,以測試其中是否有就緒的文件描述符,不過poll聰明的地方就是它把事件和文件描述符綁定了起來(後面大家就會知道這個操作的優點了!!!!!!) 《一》poll的函

原创 進程間的通訊-----管道

進程間的通訊:兩個以上的進程相互傳遞數據 管道就是進程通訊方式的一種。管道分爲有名管道和無名管道 管道:在進程之間建立數據傳輸的橋樑, 已完成數據的流通。注意: 管道是一種半雙工通訊 <一>有名管道 概念:有名管道在磁盤上會佔據一個 in

原创 fork()詳解

<一>: fork()函數用來創建新的進程,它的特點是調用一次返回兩次( 在原來的進程中返回新進程的 PID(新進程的 PID 肯定不等於 0), 在新進程中返回爲 0.) 函數原型:pid_t fork(void); pid_t get

原创 同步 --異步 --- 阻塞--- 非阻塞 ---半同步/半異步 --- 半同步/半反應堆

《一》同步和異步 I/O同步和I/O異步關注的是消息通知機制 I/O同步:是有消息處理者自己去等待消息是否被觸發,(同步需要主動讀寫數據,在讀寫數據的時候還是會阻塞,要等待這兩個操作成功才能返回) I/O異步:當所關注的消息被觸發是,由消

原创 內聯函數和宏的區別

1、替換的時機 內聯函數是在編譯期間進行替換,就是將該函數在函數的調用點直接展開 宏函數是在預處理階段替換 2、替換的成功率 內聯函數只是對編譯器的一個建議,如果編譯器覺得該函數不適合成爲內聯函數時,便會忽略前面的[ inline ]關鍵

原创 c++同名函數----重載、隱藏、覆蓋

  《一》重載 重載的規則: 函數名稱必須相同。 參數列表必須不同(個數不同、類型不同、參數排列順序不同等)。 函數的返回類型可以相同也可以不相同。 僅僅返回類型不同不足以成爲函數的重載。 相同的範圍(在同一個類中); virtual 關

原创 c++幾個關鍵字-----Explicit、Mutable、volatile

Explicit關鍵字:阻止隱式轉換的發生,聲明爲explicit的構造函數不能在隱式轉換中使用。 隱式轉換即是可以由單個實參來調用的構造函數定義了一個從形參類型到該類類型的隱式轉換。編譯器在試圖編譯某一條語句時,如果某一函數的參數類型不

原创 堆和棧的區別

1、空間分配: 堆:手動申請、手動釋放, 若程序員不釋放,程序結束時可能由OS回收,分配方式倒是類似於鏈表 棧:系統開闢,系統釋放,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。 2、申請後系統的響應 只要棧的剩餘空間

原创 c++設計模式-----工廠模式

《一》簡單工廠模式 簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(static Factory Method)模式,簡單工廠模式是由一個工廠對象決定創建出來哪一種產品類的實例. 簡單工廠模式的實質:是由一個工廠類根據傳入的參數,動態決

原创 c++的類型轉換

c++中引入新的類型轉換的原因:這是因爲新的類型轉換控制符可以很好的控制類型轉換的過程,允許控制各種類型不同的轉換.還有一點好處是C++的類型轉換控制符能告訴程序員或讀者我們這個轉換的目的是什麼,我們只要看一下代碼的類型轉換控制符,就能明

原创 深拷貝和淺拷貝

對象拷貝(Object Copy)就是將一個對象的屬性拷貝到另一個有着相同類類型的對象中去。在程序中拷貝對象是很常見的,主要是爲了在新的上下文環境中複用對象的部分或全部 數據。有兩種類型的對象拷貝:淺拷貝(Shallow Copy)、深拷