原创 IPC主題二:信號量(sem)

信號量的本質是一種數據操作鎖,它本身不具有數據交換的功能,而是通過控制其他的通信資源(文件,外部設備)來實現進程間通信, 它本身只是一種外部資源的標識。信號量在此過程中負責數據操作的互斥、同步等功能。當請求一個使用信號量來表示的資源時,進程

原创 linux中pipe

調用pipe函數時在內核中開闢一塊緩衝區(稱爲管道)用於通信,它有一個讀端一個寫端,然後通過filedes參數傳出給用戶程序兩個文件描述符,filedes[0]指向管道的讀端,filedes[1]指向管道的寫端(很好記就像0是標準輸入1是標

原创 基礎知識拾遺

static在C和C++裏各代表什麼含義?static關鍵字有三種使用方式,其中前兩種只指在C語言中使用,第三種在C++中使用。1. 局部靜態變量(C)2. 外部靜態變量/函數(C)3. 靜態數據成員/成員函數(C++)一、 局部靜態變量局

原创 進程與線程的區別

http://blog.sina.com.cn/s/blog_a2c4494a010120x0.html進程概念   進程是表示資源分配的基本單位,又是調度運行的基本單位。例如,用戶運行自己的程序,系統就創建一個進程,併爲它分配資源,包括各

原创 殭屍進程與孤兒進程(http://www.cnblogs.com/Anker/p/3271773)

孤兒進程與殭屍進程[總結]1、前言   之前在看《unix環境高級編程》第八章進程時候,提到孤兒進程和殭屍進程,一直對這兩個概念比較模糊。今天被人問到什麼是孤兒進程和殭屍進程,會帶來什麼問題,怎麼解決,我只停留在概念上面,沒有深入,倍感慚愧

原创 虛繼承與虛函數的大小問題

class A{public: char a; virtual void print() { cout << "A" << endl; }};class B: public A{};class C : public B{ void pri

原创 linux中的命名管道FIFO

匿名管道pipe前面已經說過了,接下來就說命名管道FIFO;我們可以使用以下函數之一來創建一個命名管道,他們的原型如下:#include <sys/types.h>#include <sys/stat.h>int mkfifo(const

原创 IPC主題一 :消息隊列(msg)

一、什麼是消息隊列?   消息隊列提供了一種從一個進程向另一個進程發送一個數據塊的方法。 每個數據塊都被認爲是有一個類型,接收者進程接收的數據塊可以有不同的類型值。我們可以通過發送消息來避免命名管道的同步和阻塞問題。消息隊列與管道不同的是,

原创 原子操作和鎖

https://blog.csdn.net/xgjianstart/article/details/4544314原子操作 在多進程(線程)的操作系統中不能被其它進程(線程)打斷的操作就叫原子操作,文件的原子操作是指操作文件時的不能被打

原创 C++中的單例模式

轉自:http://blog.csdn.net/hackbuteer1/article/details/7460019 單例模式是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱爲單例類的特殊類。通過單例模式可以保證系統中一個類只有一

原创 自旋鎖與互斥鎖的區別

http://blog.csdn.net/kyokowl/article/details/6294341 POSIX threads(簡稱Pthreads)是在多核平臺上進行並行編程的一套常用的API。線程同步(Thread Synchro

原创 什麼是死鎖?產生的條件?如何避免?

死鎖:一般情況下,如果同一個線程先後兩次調用lock,在第一次調用時,由於鎖已經被佔用,該線程會掛起等待別的線程釋放鎖,然而鎖正是被自己佔用着的,該線程又被掛起而沒有機會釋放鎖,因此 就永遠處於掛起等待狀態了,這叫做死鎖(Deadlock)