1华蜒、進(jìn)程和線程以及它們的區(qū)別
進(jìn)程是對(duì)運(yùn)行時(shí)程序的封裝载庭,是系統(tǒng)進(jìn)行資源調(diào)度和分配的的基本單位趟佃,實(shí)現(xiàn)了操作系統(tǒng)的并發(fā);
線程是進(jìn)程的子任務(wù)昧捷,是CPU調(diào)度和分派的基本單位,用于保證程序的 實(shí)時(shí)性罐寨,實(shí)現(xiàn)進(jìn)程內(nèi)部的并發(fā)靡挥;
一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程鸯绿,線程依賴于進(jìn)程而存在進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元跋破,而多個(gè)線程共享進(jìn)程的內(nèi)存
2、進(jìn)程間的通信的幾種方式
管道(pipe)及命名管道(named pipe):管道可用于具有親緣關(guān)系的父子進(jìn)程間的通信瓶蝴,有名管道除了具有管道所具有的功能外毒返,它還允許無親緣關(guān)系進(jìn)程間的通信;
信號(hào)(signal):信號(hào)是一種比較復(fù)雜的通信方式舷手,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生拧簸;
消息隊(duì)列:消息隊(duì)列是消息的鏈接表,它克服了上兩種通信方式中信號(hào)量有限的缺點(diǎn)男窟,具有寫權(quán)限得進(jìn)程可以按照一定得規(guī)則向消息隊(duì)列中添加新信息盆赤;對(duì)消息隊(duì)列有讀權(quán)限得進(jìn)程則可以從消息隊(duì)列中讀取信息;
共享內(nèi)存:可以說這是最有用的進(jìn)程間通信方式歉眷。它使得多個(gè)進(jìn)程可以訪問同一塊內(nèi)存空間牺六,不同進(jìn)程可以及時(shí)看到對(duì)方進(jìn)程中對(duì)共享內(nèi)存中數(shù)據(jù)得更新。這種方式需要依靠某種同步操作汗捡,如互斥鎖和信號(hào)量等淑际;
信號(hào)量(semaphore):主要作為進(jìn)程之間及同一種進(jìn)程的不同線程之間得同步和互斥手段;
套接字:這是一種更為一般得進(jìn)程間通信機(jī)制扇住,它可用于網(wǎng)絡(luò)中不同機(jī)器之間的進(jìn)程間通信春缕,應(yīng)用非常廣泛。
3艘蹋、線程同步的方式
互斥量 Synchronized/Lock:采用互斥對(duì)象機(jī)制淡溯,只有擁有互斥對(duì)象的線程才有訪問公共資源的權(quán)限。因?yàn)榛コ鈱?duì)象只有一個(gè)簿训,所以可以保證公共資源不會(huì)被多個(gè)線程同時(shí)訪問
信號(hào)量 Semphare:它允許同一時(shí)刻多個(gè)線程訪問同一資源咱娶,但是需要控制同一時(shí)刻訪問此資源的最大線程數(shù)量
事件(信號(hào))米间,Wait/Notify:通過通知操作的方式來保持多線程同步,還可以方便的實(shí)現(xiàn)多線程優(yōu)先級(jí)的比較操作