【正文】
ait3不要為了進(jìn)程退出而阻塞等待 多進(jìn)程并發(fā)服務(wù)器 1. 特點(diǎn):連接請(qǐng)求觸發(fā)創(chuàng)建新的進(jìn)程,關(guān)閉連接觸發(fā)進(jìn)程的退出; 2. 優(yōu)點(diǎn): ① 并發(fā)服務(wù)多個(gè)客戶; ② 結(jié)構(gòu)清晰,編程容易; 3. 缺點(diǎn): ① 上下文切換開(kāi)銷(xiāo)大; ② 并發(fā)度不高; 小結(jié) 1. 面向連接的并發(fā)技術(shù) 2. 使用多進(jìn)程的方式實(shí)現(xiàn): fork 主進(jìn)程的線程永遠(yuǎn)不會(huì)和任何客戶打交道,只接受連接,創(chuàng)建一個(gè)從進(jìn)程處理各個(gè)連接 3. 從進(jìn)程從主進(jìn)程調(diào)用 fork后立即執(zhí)行 ① 主進(jìn)程關(guān)閉新連接所用的描述符的副本 ② 從進(jìn)程關(guān)閉主描述符的副本 使用線程來(lái)實(shí)現(xiàn)并發(fā) 1. 一個(gè)進(jìn)程中有一個(gè)或者多個(gè)線程 linux中的線程符合 POSIX線程標(biāo)準(zhǔn), 2. linux中線程的特點(diǎn) ① 動(dòng)態(tài)創(chuàng)建: pthread_create,具有上限 ② 并發(fā)執(zhí)行:多處理機(jī)上可以并行 ③ 搶先:系統(tǒng)自動(dòng)在多個(gè)線程中調(diào)動(dòng) CPU資源 ④ 私有局部變量:每個(gè)線程有自己的私有堆棧 ⑤ 共享全局變量:一個(gè)進(jìn)程的所有線程共享全局變量 ⑥ 共享文件描述符:一個(gè)進(jìn)程內(nèi)的所有線程共享一組文件描述符 ⑦ 協(xié)調(diào)和同步函數(shù):具有線程協(xié)調(diào)和同步執(zhí)行的函數(shù) 線程的優(yōu)點(diǎn) 1. 多線程的進(jìn)程和單線程的進(jìn)程比較 更高的效率:上下文交換的額外開(kāi)銷(xiāo)減少 ① 上下文交換:線程切換需要執(zhí)行的指令 ② 同一進(jìn)程中的兩個(gè)線程比不同進(jìn)程中的兩個(gè)線程切換要快 ③ 進(jìn)程內(nèi)的線程切換不用改變虛擬存儲(chǔ)器的地址 2. 共享存儲(chǔ)器: ① 并 發(fā)服務(wù)器中的多個(gè)副本需要相互通信或者訪問(wèn)共享的數(shù)據(jù) ② 利用線程容易構(gòu)造監(jiān)控系統(tǒng) 線程的缺點(diǎn) 由于線程間共享存儲(chǔ)器和進(jìn)程狀態(tài),一個(gè)線程的動(dòng)作可能對(duì)同一個(gè)進(jìn)程內(nèi)的其他線程產(chǎn)生影響。 1. 兩個(gè)線程如果同一時(shí)刻訪問(wèn)同一個(gè)變量,會(huì)產(chǎn)生相互干擾 2. 將指針?lè)祷亟o一個(gè)靜態(tài)的數(shù)據(jù)項(xiàng)的庫(kù)函數(shù)不是線程安全的,覆蓋將會(huì)導(dǎo)致錯(cuò)誤 3. 缺乏健壯性,一個(gè)線程出錯(cuò),服務(wù)器將會(huì)終止整個(gè)進(jìn)程 描述符、延遲和退出 1. 許多動(dòng)態(tài)分配的資源都是和進(jìn)程相關(guān)的 ① 一個(gè)線程打開(kāi)某個(gè)文件,同一進(jìn)程的其他線程也可以使用同一個(gè)描述符訪問(wèn)文件 ② 有些操作系統(tǒng)調(diào)用只會(huì)影響調(diào)用它的線程 I/O調(diào)用阻塞,只影響調(diào)用它的線程; ③ 有些系統(tǒng)調(diào)用會(huì)影響整個(gè)進(jìn)程 exit函數(shù)會(huì)讓整個(gè)進(jìn)程退出 2. 線程的退出方法 ① 線程的頂級(jí)過(guò)程返回時(shí)終止該線程 ② 調(diào)用 pthread_exit終止該線程 使用線程服務(wù)器實(shí)例 1. 多線程的 ECHO服務(wù) ① 并發(fā)的面向連接的算法 ② 連接到達(dá)后,調(diào)用 pthread_create創(chuàng)建一個(gè)新的線程來(lái)處理連接。 ③ 新線程執(zhí)行 TCPechod過(guò)程。 2. page110 ① 線程處理函數(shù) ② 統(tǒng)計(jì)結(jié)構(gòu)的互斥使用 ③ 互斥處理函數(shù) 小結(jié) 1. 一些可能影響整個(gè)進(jìn)程的系統(tǒng)函數(shù)(如exit)并發(fā)服務(wù)器可以在一個(gè)進(jìn)程中用若干線程實(shí)現(xiàn) 2. 線程并發(fā)服務(wù)器的優(yōu)點(diǎn)是: ① 上下文切換開(kāi)銷(xiāo)少 ② 共