一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

世界觀焦點(diǎn):為什么用fork提高處理速度?詳情解釋

來源:CSDN 時(shí)間:2023-02-17 09:07:23


(資料圖)

這里先說一下為什么用fork:

例如:Web服務(wù)器,當(dāng)許多瀏覽器來訪問的時(shí)候,如果服務(wù)器等一個(gè)處理完再處理另一個(gè),那這樣就太慢了,服務(wù)器可以為每一個(gè)請求開一個(gè)進(jìn)程,這樣就實(shí)現(xiàn)了多進(jìn)程,提高處理速度。例如:有一個(gè)大工程,可以分為許多個(gè)模塊,就可以為每一個(gè)模塊創(chuàng)建一個(gè)線程,當(dāng)然有的模塊之間有先后順序,這可以進(jìn)行特殊處理。

1. 概念:

fork是在Linux中使用的一個(gè)分叉函數(shù)。若成功調(diào)用一次則返回兩個(gè)值,子進(jìn)程返回0,父進(jìn)程返回子進(jìn)程標(biāo)記,出錯(cuò)則返回-1。可以把父進(jìn)程和子進(jìn)程的關(guān)系看做一個(gè)鏈表,父進(jìn)程指向子進(jìn)程,子進(jìn)程如果還有子進(jìn)程就再指向子進(jìn)程,否則為空。

2. 特性:

每個(gè)進(jìn)程都有一個(gè)非負(fù)整數(shù)表示的唯一進(jìn)程ID;fork()函數(shù)通過系統(tǒng)調(diào)用創(chuàng)建一個(gè)與原來進(jìn)程幾乎完全相同的進(jìn)程;

3. 特殊進(jìn)程:

ID為0的是調(diào)度進(jìn)程,該進(jìn)程是內(nèi)核的一部分,不執(zhí)行任何磁盤上的程序 ;ID為1的是Init進(jìn)程,init通常讀取與系統(tǒng)有關(guān)的初始化文件(/etc/rc*文件、/etc/inittab文件、/etc/init.d/中的文件) ;ID為2的是頁守護(hù)進(jìn)程,負(fù)責(zé)支持虛擬存儲(chǔ)器系統(tǒng)的分頁操作;

常用的操作函數(shù):

#include      //頭文件pid_t getpid(void);     //返回調(diào)用進(jìn)程的IDpid_t getppid(void);    //當(dāng)前進(jìn)程父進(jìn)程ID

4. 舉個(gè)栗子

#include #include #include using namespace std;int main(){    int count = 0;    pid_t pid = fork();    if(pid < 0)        printf("error\n");    else if(pid == 0){        printf("Child Id = %d\n", getpid());        count++;    }else{        printf("Parent Id = %d\n", getpid());        count++;    }    prinf("count = %d\n", count);    return 0;}

輸出結(jié)果為:

Parent Id = 3496count = 1Child Id = 3497count = 1

父進(jìn)程和子進(jìn)程沒有執(zhí)行的先后順序,再加個(gè)圖,加深一下理解:

圖 1  程序示意圖

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top 主站蜘蛛池模板: 阿拉尔市| 新绛县| 中卫市| 平罗县| 湟源县| 卫辉市| 广安市| 平和县| 叙永县| 富川| 高清| 左贡县| 无为县| 桦甸市| 通州区| 镇巴县| 佛山市| 阳泉市| 竹北市| 奇台县| 孝义市| 林州市| 思南县| 施甸县| 罗江县| 鹤岗市| 博爱县| 武穴市| 西华县| 启东市| 大丰市| 梓潼县| 张家口市| 肇东市| 大同县| 普兰店市| 奉贤区| 定日县| 和平区| 正定县| 本溪|