學習 ACE 讀C 網路程式設計(卷一)

2021-04-21 14:20:03 字數 1300 閱讀 1706

第五章 併發設計空間

1. 伺服器可以分為迴圈式,並髮式,和反應式等幾大類。在這一設計空間中,需要權衡的主要在於:是要簡化程式設計,還是要提高程式的可伸縮性。

2. 通過使用多程序或多執行緒。 並髮式伺服器的乙個常見設計是「乙個請求乙個執行緒」。

3. 「thread-per-connection"出色地支援」客戶請求「的優先順序控制。 例如來自高優先順序客戶的連線請求會被關聯到高優先順序執行緒上。 因而,來自高優先順序客戶的請求會在低優先順序客戶請求之前被處理,因為os可以搶占低優先順序執行緒。

4. 反應式伺服器幾乎是同時處理多個請求--儘管所有處理實際上在乙個執行緒中完成。

5.    通過」同步事件多路分離「機制, 如select()可以顯式執行分時處理, 將伺服器的注意力分散到每乙個請求上, 以此方式實現反應伺服器。

6. 基於select()的反應伺服器實現:

void reactive_server()

initialize listener endpoint(s)

// event loop

for(;;)

select()  on multiple endpoint for client requests

for (each active client requests)

if (reponse is necessary)  send  response to client

7. 程序內同步不需要核心的干預, 而程序間同步則需要核心的干預。

8.執行緒可以通過」程序區域性記憶體「共享資訊。

9. 乙個執行緒中呼叫某些函式, 會對整個程序帶來不利的***。 如unix的exit()會終止乙個程序中的所有執行緒。

10. 在當今常見的作業系統中, 一共實現了三種執行緒排程模型:

n:1:使用者執行緒模型(hp-ux 10.20, sunos 4.x)(由程式庫提供,核心不知執行緒的存在)

1:1:核心執行緒模型:應用程式建立的每乙個執行緒都由乙個核心執行緒直接管理。 os核心將每乙個核心執行緒都排程到系統cpu上。(hp-ux 11, linux, windows nt/2000)平台提供了1:1核心執行緒模型。

n:m:混合執行緒模型(solaris):支援使用者執行緒和核心執行緒的混合形式。

11. 併發體系的規範型別有兩種:」基於任務「的體系和」基於訊息「的體系。基於任務的併發體系根據應用程式中的」服務單元「來組織多個cpu, 可以通過」生產者/消費者「模式來實現。 基於訊息的併發體系從應用程式和網路裝置接收到的訊息來組織cpu。併發性是通過乙個服務任務棧, 通過同時在各個cpu上處理多個訊息而獲得的。"乙個請求乙個執行緒",」乙個連線乙個執行緒「及」執行緒池「模型可用來實現」基於訊息「的併發體系。

C 網路程式設計 ACE相關資料收集

小飛驢的 馬維達 c 網路程式設計 卷二 譯者 cgi bin lb5000mx leoboard.cgi loveunix技術論壇 hxh 賀星河 的專欄 ace網路程式設計 ace自適配通訊環境討論 ace技術 集 一.ace自適配通訊環境 用於開發通訊軟體的物件導向網路程式設計工具包 ace程...

《UNIX網路程式設計》卷一第四章學習筆記

includeint socket int family,int type,int protocol 返回值 出錯返回 1,否則返回非負描述符famliy引數指明協議族 取值含義 af inet ipv4協議 af inet6 ipv6協議 af local unix域協議 af route 路由套...

C 網路程式設計 一

學習c 已經有一段時間了,一直都是學習基礎的東西,每次寫的 都比較少,沒有明確的學習目標,基礎還是基礎,漫無邊際的,基本上都是做一道或者幾道演算法題,連乙個小小的實戰都沒有,也不知道自己學得怎麼樣了,現在終於有乙個小小的實戰了 c 乙個網路程式設計例項 由於自己一直在做c 只能業餘時間學習c 都說c...