1. 程式人生 > >從頭開始做一個多執行緒,支援plugins模型的httpd,就叫 'tea' 吧

從頭開始做一個多執行緒,支援plugins模型的httpd,就叫 'tea' 吧

今天,開始從頭做一個小小的專案,純粹的演習。

專案概述

    既然是演習,就不太關心其意義了,所以目標是:一個跨平臺的app_httpd,多執行緒,支援外掛。

    跨平臺:這個不說了。

    app_httpd:之所以選擇這個方向,是因為近期工作涉及到這個方向,另外在很多場景下,使用http作為介面和邏輯的介面,是個很好的選擇,所以tea的準確目的不是做一個類似apache的通用http server,而是一個為了方便的把應用(邏輯)與介面分離,並且使用http介面通訊的app server。

    多執行緒:每個連線使用一個獨立的工作執行緒,這樣作的效率似乎很低,但是對於app server,每個連線不互相干擾是很方便的,一個app session完全可以阻塞整個工作執行緒,而不用關心其它session;

    支援外掛:app 使用外掛實現;

    整個專案使用 autoxxxx 工具管理,主要在linux和mac上開發,使用c語言。

建立專案:

萬事開頭難,先得學習 autoxxxx 工具,水深啊!按照網上的搜尋的一大堆結果,一步一步,磕磕碰碰;

    1. 建立目錄:tea                      主目錄

                              inc                全域性標頭檔案

                              src                原始碼,以及私有標頭檔案

                                      test      測試程式

                              plugins         外掛目錄

                                      xxx       xxx外掛

                              build             構建目錄

     2. 編寫 Makefile.am:主目錄,plugins 目錄,這裡的 Makefile.am 就是為了指示子目錄的,所以模樣差不多

                

      3. 繼續編寫 tea/src 目錄的 Makefile.am: 

 

    4. 編寫 configure.ac: 這個最頭大了(gnu autoconf 的文件裡面都說,autoconf不是為了方便開發者,而是方便使用者的),不過理解了基本道理之後,擴充套件專案可真是方便啊。

 

    5. 好了,autoconf/automake的準備好了,邊寫程式碼,邊修改configure.ac, Makefile.am,邊測試 :)

         autoreconf -i

         cd build

         ../configure

         make

         src/test/test_xxx

今天就這些吧,後面開始tea專案本身了。

(剛剛開始用 csdn,是否支援 git 呢?原始碼如何附上呢?先放在資源裡吧,搜 tea source)