成都游戲Coder,記錄游戲開(kāi)發(fā)過(guò)程的筆記和心得!
可能涉及的技術(shù) Winsock: windows網(wǎng)絡(luò)通信 完成端口: Windows上服務(wù)器的大規(guī)模連接機(jī)制。 線程池: 高效高利用率的線程機(jī)制。
本文主要實(shí)現(xiàn)一個(gè)線程池的例子,從基本原理入手,一個(gè)線程池會(huì)記錄每個(gè)線程的信息,以及每個(gè)線程的處理。 一般一個(gè)簡(jiǎn)單線程池至少包含下列組成部分。
1.線程池管理器(ThreadPoolManager):用于創(chuàng)建并管理線程池 2.工作線程(WorkThread): 線程池中線程 3.任務(wù)接口(Task):每個(gè)任務(wù)必須實(shí)現(xiàn)的接口,以供工作線程調(diào)度任務(wù)的執(zhí)行。 4.任務(wù)隊(duì)列:用于存放沒(méi)有處理的任務(wù)。提供一種緩沖機(jī)制。
備注:在設(shè)計(jì)ipc的時(shí)候參考 http://man.chinaunix.net/tech/lyceum/linuxK/ipc/ipc.html 線程池設(shè)計(jì) http://www.ibm.com/developerworks/cn/java/l-threadPool/
posted on 2009-08-09 18:10 expter 閱讀(4202) 評(píng)論(8) 編輯 收藏 引用
不用線程,只是select輪詢又如何?不見(jiàn)得性能很差。 回復(fù) 更多評(píng)論
@foxselect的話,如果進(jìn)程同時(shí)占用的socket超過(guò)100,效率將顯著下降。另外select模型畢竟還是串行操作,無(wú)法做到真正的recv/send并行。 回復(fù) 更多評(píng)論
你一個(gè)線程select幾十個(gè)不就行了? 回復(fù) 更多評(píng)論
@fox select模型 確實(shí)能提高效率,我這里只是介紹一個(gè)線程池,他是我在處理IPC機(jī)制的一個(gè)模型 回復(fù) 更多評(píng)論
都是epoll的年代了,還select-_-! 回復(fù) 更多評(píng)論
如果你只需要1~2個(gè)socket 連接select 還是很不錯(cuò)的, 比如客戶端如果需要handle大量的鏈接, 如服務(wù)器端, 用 IOCP /EPOLL/BOOST。ASIO所以需要case by case, 不能一概而論 回復(fù) 更多評(píng)論
這代碼 應(yīng)該不是你寫的吧.只是把人家的代碼拿來(lái)該了幾個(gè)namespace 回復(fù) 更多評(píng)論
這線程池寫的不咋地。能運(yùn)行嗎? 回復(fù) 更多評(píng)論
Powered by: C++博客 Copyright © expter