这只是一个线程池的框架还有许多不足 : 没有实现server->client数据发送 , 还有许多细节没有完善。

Lock.cpp : 锁的操作 , 读锁可以并发 , 写锁独占.

Queue.h : 队列的封装 , 队列的读和写都加了锁的保护.

Socket.cpp : 套接口的简单封装.

Thread.cpp : 线程的封装实现了些简单的线程停止,运行等功能 , 启动别的线程的时候需要继承次类.

Worker.cpp : 用户接口类 , 用户需继承此类。

ListenThread.cpp(继承Thread.cpp) : 服务器监听线程.如果有客户端连接通知ThreadPool类,由ThreadPool类进行任务分派.

TaskThread.cpp(继承Thread.cpp) : 具体任务类,负责接受客户端发送数据.

ThreadPool.cpp (继承Thread.cpp) : 线程池类负责启动别的线程 , 并且进行线程调度。首先启动ListenThread.cpp类,如果有客户端

连接ListenThread.cpp类发送信号通知ThreadPool.cpp类,收到信号再分配给TaskThread.cpp类,进行处理。如果没有空闲任务类,动态再

创建一定数目的任务类。

#ifndef __USERWORKER__#define __USERWORKER__#include "Worker.h"#include "Log.h"#include "def.h"#include "Server.h"struct UserData{    int age;    char name[20];};class UserWorker : public G_Worker{    public:        UserWorker(unsigned int num) : G_Worker(num)        {        }        ~UserWorker()        {        }        void recvMessage(void *str , int nSocket)        {    //      struct UserData *userData = (struct UserData*)str;    //      std::cout<<"userData->age = "<
age<
Bind(9999); } ~MainPro() { /* if(userWork) { delete userWork; userWork = NULL; } */ } static MainPro *getInstance() { if(!instance) { instance = new MainPro(); } return instance; } void delInstance() { if(instance) { delete instance; instance = NULL; } } bool init(); private: UserWorker *userWork; static MainPro *instance; };#endif

#include "testPool.h"MainPro *MainPro::instance = NULL;bool MainPro::init(){    G_Server::init();}int main(){    MainPro *mp = MainPro::getInstance();    mp->init(); //看了一遍,整个结构,没感觉出来清晰的感觉。。    sleep(-1);    //mp->delInstance();    //delete mp;    //mp = NULL;    //mp.init();}

#ifndef __LOG__#define __LOG__#include "def.h"void debug_output(const char *fmt , ...);#endif
#include "Log.h"void debug_output(const char *fmt , ...){/*    time_t ti;    ti = time(NULL);    char times[65535];    snprintf(times , sizeof(times) , "%s" , ctime(&ti));    times[strlen(times)-1] = ' ';    strncat(times , "-----------    " , 9);    */    va_list ap;    char buff[65535];    va_start(ap , fmt);    vsnprintf(buff , sizeof(buff) ,  fmt , ap);    std::cout<

log也没写到文件里等,半成品。。。

总结,没啥优点,这个模型,感觉不是很好。。。