<sub id="dnrxn"><var id="dnrxn"><ins id="dnrxn"></ins></var></sub>
<thead id="dnrxn"></thead>
<address id="dnrxn"></address>
<address id="dnrxn"><dfn id="dnrxn"></dfn></address>

    <sub id="dnrxn"><dfn id="dnrxn"><ins id="dnrxn"></ins></dfn></sub>

    <address id="dnrxn"></address><address id="dnrxn"></address><address id="dnrxn"></address>
      <form id="dnrxn"><dfn id="dnrxn"></dfn></form>

      <thead id="dnrxn"></thead>

        <form id="dnrxn"><listing id="dnrxn"></listing></form>

        <thead id="dnrxn"><var id="dnrxn"><output id="dnrxn"></output></var></thead>

        高郵市順發燈具廠官方網站!

        新浪微博騰訊微博

        高郵市順發燈具廠

        專注照明燈具20年 全國知名注冊品牌
        高郵市順發燈具廠唯一正品官方網站

        全國咨詢熱線
        18652787278
        資證榮譽
        您的位置:首頁 > 新聞中心 > 行業動態»
        線程池技術在路燈監控軟件中的應用
         

        路燈作為現代城市的基礎設施,在城市的日常運作和人們的生活中起著重要作用,路燈系統的先進程度標志著一座城市的現代化水平。路燈控制系統能夠及時準確的統計路燈設備的運行情況和亮燈情況,將路燈故障或線路斷線的報警信號送到監控中心,遠程管理和設置亮燈時間策略及調光規則,做到合理亮燈和按需亮燈,從而能夠實現真正的路燈管理的“五遙(遙測、遙控、遙信、遙調、遙視)。通信服務器作為路燈監控系統中的重要組成部分,負責與監控操作的客戶端以及道路兩旁的多臺遠程路燈集中控制器進行數據通信、數據處理。通信服務器必須能夠保證長時間的為大量監控終端軟件和路燈集中控制器提供穩定的通信服務。

          路燈系統結構圖在一般的并發服務器架構中,一個單獨的線程等待客戶端的連接請求,當有請求到來時該線程創建一個新的服務線程來進行處理,在新線程創建完畢后主線程再回復至等待請求狀態。但面對大量的客戶端連在整個系統中,通信服務器固定IP地址,并提供兩個端口號。通信服務器通過Intemet/GPRS網絡與路燈集中控制器通信,接收路燈系統的實時運行情況,存入數據庫,必要時向用戶監控端轉發,另外通信服務器通過Internet網絡與用戶客戶端相連,接收它的控制命令,并向路燈集中控制器轉發。

          2C/S通信模型與線程池的工作原理在管理中心和服務器以及路燈集中控制器和服務器間的網絡通信模式采用的都是常見的C/S模式,即客戶端/服務器通信模式。在C/S結構下,服務器程序通常在一個固定的地址監聽客戶端的請求,客戶端和服務器通過TCP協議建立數據傳輸,服務器進程通常情況下處于“休眠”狀態,直到客戶端對該服務器發出連接請求,將其“喚醒”。此時,服務線程“醒來”并對客戶端的請求做出適當的反應。客戶端總是主動的請求啟動通信,而服務器一直等待被動通信。這種請求/應答的過程如所示。

          線程池是一種管理一定數量線程的手段。線程池中的線程數量是由運行時機器容量負載的配置信息以及動態信息決定的。

          線程池的基本思想是在程序開始時就在內存中開辟一些線程,形成一個預派生的線程池,同時創建一個任務隊列氣當有新的客戶端請求到達時,將新連接的請求任務首先投遞到任務隊列,從“線程池”中選擇一個空閑的線程為新的客戶端請求服務,服務完畢后,線程不是退出,而是進入空閑線程池中。通過對多個任務重用已經存在的線程對象,降低了對線程對象創建和銷毀的開銷。當客戶端請求時,線程對象已經存在,可以提高請求的響應時間,從而整體地提高了系統服務程如下:綁定本地的服務知名端口。

          以監聽套接口為參數創建多個服務線程,主線程休眠。

          月艮務線程的流程如下:接受外來連接請求,accept函數返回服務套接口。

          處理客戶端服務的請求,關閉服務套接口,并返回步驟(1)。

          3服務器端軟件的設計與實現3.1月艮務器端軟件的設計思路在服務器程序中主要包括兩個線程,主線程和工作者線程,主線程主要負責監聽客戶端的連接,接收到新的連接后,將新套接字安排給工作線程進行處理。先創建幾個并行的工作者線程,一般這個數目為CPU的個數,它們為即將到的客戶端連接提供服務。當有一個新的服務連接請求,則取出一個工作者線程為它提供服務,如果沒有空閑的工作者線程,則將這個新的套接字連接加入到任務隊列中,該隊列采用先進先出的(FIFO)的策略來保證對后續未能得到及時服務的連接請求得到公平的服務。另外采用先進先出的策略可以減少CPU在不同線程間的切換次數,降低線程上下文切換帶來的系統開銷。

          程序用下面的CONNCTX結構來記錄每個客戶端套接字的信息,用THREADOB結構來記錄每個工作者線程的信息,它們的關系如所示。

          每接收到一個新的連接,就會為這個新的連接創建一個該結構并初始化該結構的內部成員。當連接關閉或者出錯時,就釋放該客戶端連接對應CONNCTX結構對象所占用的內存,以免造成內存的泄露。

          句柄的表現。

          一個較為簡單的基于線程池模型的服務器程序流每創建一個工作者線程,便為該線程申請一個THREADOB結構并初始化該結構中的成員,當這個工作者線程關閉時,再釋放它所對應的THREADOB結構對象所占用的內存空間,并且將定義一個gpThi'eadList來指向該線程對象鏈表的表頭。tvpedefstruct數量套接字對象列表的表頭接字對象列表的表尾//指向下一個THREADOB對象,以形成表線程對象和套接字對象間的關系主線程程序主要創建監聽套接字、初始化全局變量、創建線程池,將新到來的客戶端連接加入到客戶端的連接列表中,等空閑的工作線程的處理。主框架代碼如下://變量的聲明及其初始化//創建監聽套接字//綁定本地地址到監聽套接字//處理客戶端的連接請求while(TRUE)//循環處理所有未決的連接請求//將一個套接字對象安排給空閑的工作線程處理該線程運行后,取得本線程對象的指針,進入無限循環并在events數組所記錄的事件對象上等待,處理網絡事件,工作線程的框架代碼如下:理網絡事件//信息的處理與存睹4服務器端軟件的仿真測試線程池模型相付于多線程來說。服務器對大呈并發客戶端的連接請求擁有更快的響應速度。為r測試此基于線程池技術的服務器端軟汴的響應速度。編寫了多線程的服務器軟件和能夠對服務器不斷的發起并發連接的客戶端軟件,做如下仿真壓力測試:服務器的硬件環境為Intel)2DuoCPU,2.93GHz,2G內存;服務器分別運丨7基于線程池技術和多線技術的服務器端軟件,通過分析它們各自占用的物理內存使用情況和客戶端一次連接成功率來對服務器端軟件進行分析。具體的測試結果如表丨所示:表1服務器軟件測試比較服務器軟件版本線程池模M多線程模型客戶端數物理內存使幣/M客戶端一次連接成功率/%從表I可以看出。多線技術由十預先刨建線等待客P端的連接請求,它的客戶端一次連接明顯高十多線模坳。H隨著客戶端的多。多線模型的客戶端一次連接率在下降,而線程池漠型相對來說較為穩定另外由于線程池模型減少了CPU在線程上下文之間的切換次數。而多線程池模型在大量新的客戶端連接時需要大量的創建新的線程和銷毀線程。因此線程池模型比多線程模型的物理內存占用M要少。更能節約系統資源2008環境為開發環境,以   5結論線程池技術的引。能夠有效的解決服務端與大量客戶端并發連接的問題,將由T線程的創建和銷毀而帶來的系統消耗盡可能的降到最低。可以顯著的提服務器端軟件的穩定性和對客戶端發起的并發連接快速響應的能九本文給出了線程池技術在服務器端軟件的設計思路和和人體的框架實現代碼,并H.通過和多線模型進行比較測試來證明線程池模型的優越性。

        聯系我們

        聯系人:吳先生

        座機:18652787278

        地址:高郵市送橋鎮郭集工業集中區

        国产在线精品亚洲第一品