1.進(jìn)程與線程
進(jìn)程是CPU資源分配的最小單位,是具有一定獨(dú)立功能的程序亥曹。
線程是CPU調(diào)度的最小單位嘉抓,基本上不擁有系統(tǒng)資源。
一個(gè)進(jìn)程可以包含1+個(gè)線程刘离。
進(jìn)程與線程之間關(guān)系的簡(jiǎn)單解釋:http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
2.幾個(gè)基本概念
臨界區(qū)室叉,互斥量睹栖,信號(hào)量,事件
這些概念解釋了線程間同步方式茧痕。
3.進(jìn)程的幾種狀態(tài)
4.進(jìn)程間的通信方式
進(jìn)程間通信主要包括管道, 系統(tǒng)IPC(包括消息隊(duì)列,信號(hào),共享存儲(chǔ)), 套接字(SOCKET).
管道分為三種:
1.普通管道:只能在有親緣關(guān)系的進(jìn)程間單向傳輸
2.流管道:半雙工野来,可以雙向傳輸
3.命名管道:雙工,可以在許多并不相關(guān)的進(jìn)程之間進(jìn)行通訊
系統(tǒng)IPC:
三種方式類同,都是使用了內(nèi)核里的標(biāo)識(shí)符來識(shí)別.
1.信號(hào)
信號(hào)是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生.
2.消息隊(duì)列
消息隊(duì)列就是消息的一個(gè)鏈表踪旷,它允許一個(gè)或多個(gè)進(jìn)程向它寫消息曼氛,一個(gè)或多個(gè)進(jìn)程從中讀消息。
3.共享內(nèi)存
通常由一個(gè)進(jìn)程創(chuàng)建令野,其余進(jìn)程對(duì)這塊內(nèi)存區(qū)進(jìn)行讀寫舀患。
它往往與其他通信機(jī)制,如信號(hào)量,配合使用,來實(shí)現(xiàn)進(jìn)程間的同步與通信.
套接字:
可用于不同機(jī)器間的進(jìn)程通信。
5.進(jìn)程的同步方式
進(jìn)程間通信與線程間通信之間的關(guān)系?
因?yàn)閃INDOWS運(yùn)行的實(shí)體是線程, 狹義上的進(jìn)程間通信其實(shí)是指分屬于不同進(jìn)程的線程之間的通訊.而單個(gè)進(jìn)程之間的線程同步問題可歸并為一種特殊的進(jìn)程通信.它要用到內(nèi)核支持的系統(tǒng)調(diào)用來保持線程之間同步. 通常用到的一些線程同步方法包括:Event, 互斥量Mutex,信號(hào)量Semaphore,臨界區(qū)資源等.