Re: [問題] Server的架構
LINUX ?
可以考慮使用 epoll 或是libevent ,
http://rd-program.blogspot.com/2007/04/concurrency-programming.html 有提到一些相關
的文章或是參考這篇很有名的文件 http://www.kegel.com/c10k.html ,裡面有提到一些
比較...
win32 就不用質疑囉! 一定是iocp , 網路上有很多相關的範例
thread & fork 各有他的優缺點,但若要提到高負載與效率,lwp 才是趨勢,可以參考erlang
這類的語言,或是 一些event base programming,這應該是現在的趨勢,如果不想研究太多
東西,建議你可以參考apache mina http://mina.apache.org/ 或是c++ 裡ace 這類的東西
"Victor" <StubbornLin.bbs@ptt.cc> 撰寫於郵件新聞:4VkDc6$8mU@ptt.cc...
> 我最近正在考慮寫一個Server
>
> 目前有考慮三種架構
>
> 1.輪詢式的架構
> 也就是單一迴圈
> 不停的更新所有連線的狀態並做出回應
>
> 2.MultiThread
> 每個連線都由一個Thread負責
>
> 3.混合式
> 混合輪詢和MultiThread式,每個Thread負責一定數量的連線
>
> 目前我只有寫過輪詢式的,其它兩種都沒寫過
>
> 考慮到效能,輪詢式的在連線數很多時,很明顯的一個問題就是
> 當連線數到一定數量時,可能會變得很沒效率
> 每個連線如果花1ms,1000個連線就是1秒
>
> 但是如果以MultiThread來執行,可以充份利用CPU的資源
> 可是這又帶來另一個問題,由於我對Thread的成本不太了解,用起來還是會怕怕的
>
> * 其中一個問題就是,我不了解開一個Thread到底需要多少成本?
>
> 接著,我想到如果1000個連線就要開1000個Thread
> 而Thread的成本如果讓人難以接受的話,那可能就得考慮第三種
> 混合式的,每個Thread負責一定數量的連線
> 但是又帶來另一個問題就是設計上會變得有點複雜
>
> ----------------------------------------------------------------
>
> 除此之外還有另一個我不了解的地方,就是
>
> * 多核心的CPU到底對效能上的改進有多少幫助?
>
> 最近多核心的CPU在市面上似乎成為主流,但是我一直很好奇
>
> * 就運作上,到底能將工作分配給不同核心做到什麼地步?
>
> 以上,是我的問題
>
> --
> VICTOR工作室 | PTT遊戲設計版隆重開幕!
>
> | 不管是新手老手,程式美工音樂企劃....
> URL : http://www.kinmen.info/vic/ | 都歡迎來遊戲設計版參與討論
> XD
> | 戰略高手>
> C/C++ | GameTopics>
> Visual Basic 6.0 | GameDesign
>
> --
> ※ 發信站: 批踢踢實業坊(ptt.cc)
> ◆ From: 59.116.64.77
> 推 Tiberius:man select
> 59.126.63.79 09/04 21:13
> → Tiberius:然後你是不是又要貼了文就不理啦 :p
> 59.126.63.79 09/04 21:13
>
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
1
2
Programming 近期熱門文章
PTT數位生活區 即時熱門文章