软件发布

手机版,更便捷!

下载排行榜首页软件下载安卓下载资讯教程推荐专题装机必备
当前位置:文章资讯 > 编程开发 >

Socket Server怎么连接客服端?SocketTool怎么用/如何建立Socket服务端/客户端

时间:2016-12-22 浏览次数: 编辑:9upk

第 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);

}
 

本文导航
  • 第1页: 首页
  • 第2页: 对Socket的封装
  • 第3页: 线程池的实现
  • 第4页: 连接池的实现
  • 第5页: 监听线程的实现

标签: Socket

上一篇:vs2010实际项目ASP.NET小试练完整页下一篇:2010年9月TIOBE编程语言哪个好?TIOBE

相关文章

最新评论

本类排行榜

图文专题

  • 类地下城割草手游推荐
  • 种菜小游戏
  • 单机打鱼游戏
  • 好玩的放置修仙手游