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