西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发C#.NET → Socket Server连接客服端的简单实现

Socket Server连接客服端的简单实现

相关软件相关文章发表评论 来源:本站整理时间:2010/9/12 21:54:41字体大小:A-A+

作者:佚名点击:922次评论:0次标签: Socket 客服端

  • 类型:服务器区大小:21KB语言:中文 评分:6.6
  • 标签:
立即下载
4 页 连接池的实现
四、连接池的实现
每个连接池保存一个链表保存已经建立的连接:list<MyConnection *> * m_connections

当然这个链表也需要锁来进行多线程保护:pthread_mutex_t m_connectionMutex;

此处一个MyConnection也是一个MyTask,由一个线程来负责。

线程池也作为连接池的成员变量:MyThreadPool * m_threadPool

连接池由类MyConnectionPool负责,其主要函数如下:

void MyConnectionPool::addConnection(MyConnection * pConn)
{

pthread_mutex_lock(&m_connectionMutex);

m_connections->push_back(pConn);

pthread_mutex_unlock(&m_connectionMutex);

m_threadPool->addTask(pConn);
}
 

MyConnectionPool也要启动一个背后的线程,来管理这些连接,移除结束的连接和错误的连接。

void MyConnectionPool::managePool()
{

pthread_mutex_lock(&m_connectionMutex);

for (list<MyConnection *>::iterator itr = m_connections->begin(); itr!=m_connections->end(); )
{
MyConnection *conn = *itr;
if (conn->isFinish())
{
delete conn;
conn = NULL;
list<MyConnection *>::iterator pos = itr++;
m_connections->erase(pos);
}
else if (conn->isError())
{

//处理错误的连接
++itr;
}
else
{
++itr;
}
}

pthread_mutex_unlock(&m_connectionMutex);

}
 

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)