又有感興趣的話題了:
liu chuncheng:
前兩天看了一篇有關(guān)IOCP的文章,里面提到apache。文章作者的觀點(diǎn)是用IOCP模型的IIS應(yīng)該比進(jìn)程模型的apache的性能要高。我想針對(duì)這個(gè)主題發(fā)起討論。
首先說(shuō)一下我的觀點(diǎn):
1、IOCP是windows下比較高效的一個(gè)異步IO模型,他可以克服I/O設(shè)備慢速的缺點(diǎn),從而可以構(gòu)建一個(gè)高效的網(wǎng)絡(luò)通訊模型。
2、但我認(rèn)為IOCP也不是萬(wàn)能的,只有合適的應(yīng)用才會(huì)發(fā)揮他的長(zhǎng)處。比如游戲服務(wù)器,或者流媒體服務(wù)器等。
3、但我認(rèn)為對(duì)于web服務(wù)器它不是最好的方案,原因如下:
? ? a、web服務(wù)器的連接之間的數(shù)據(jù)是獨(dú)立的,沒有聯(lián)系的,那么每個(gè)連接的數(shù)據(jù)用一個(gè)線程或者進(jìn)程來(lái)處理是很高效的,處理完之后就退出了,再?zèng)]有任何其它的
開銷。如果用IOCP那么就要放到隊(duì)列里,從線程池里面頻繁的切換線程來(lái)處理數(shù)據(jù),這種開銷還是比較大的。只是web的資源需要做同步的機(jī)制。
b、web服務(wù)器是基于短連接的,區(qū)別于游戲服務(wù)器的長(zhǎng)連接,就是不需要對(duì)這個(gè)連接做更多的管理。相當(dāng)于一個(gè)連接上來(lái)之后就做一個(gè)任務(wù),做完任務(wù)之后就一拍兩散。
? ? 綜合上面的兩點(diǎn),化繁為簡(jiǎn),我認(rèn)為對(duì)于web服務(wù)器用最簡(jiǎn)單的網(wǎng)絡(luò)模型——1連接+1線程,可能也是比較好的方案。
? ? 一家之言,歡迎大家拍磚!
http://groups.google.com/group/dev4server/browse_thread/thread/6cd19a9afc1fd295/4624a8b4bf162e6f#4624a8b4bf162e6f