随笔 - 6  文章 - 11  trackbacks - 0
<2011年2月>
303112345
6789101112
13141516171819
20212223242526
272812345
6789101112

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

     摘要: 基于Lua 5.1实现的远程调试器,脚本运行在服务端,客户端登录后可以远程管理脚本,可以调试脚本,单步跟进、变量查看。
界面基于wxWidgets实现,网络通讯接口采用CORBA/TAO。  阅读全文
posted @ 2011-02-28 16:23 风雷九州 阅读(1928) | 评论 (2)编辑 收藏
     摘要: 在C++中要进行并发处理,不可避免要使用多线程,在传统的教科书中,大家都是采用最原始的多线程技术,应用逻辑和线程并发策略紧密绑定。
在一个典型的服务器程序中,客户端的请求往往包含了很多不同的逻辑命令,如在一个线程处理函数中,需要根据客户端的命令代码处理不同的业务逻辑:

int thrad_main(int cmd_id,char *data){
switch(cmd_id)
{
case 1:
...
break;
case 2:
...
break;
}
}

如此这般,业务处理逻辑和线程逻辑紧密耦合,这是一种很“丑陋”的代码。
如何通过一种优雅的方法,分离并发逻辑和业务逻辑,通过通用的并发框架,业务逻辑设计者只需要关心自己的逻辑代码,交给“线程池”去处理即可,而不需要去关心如何创建线程,等待线程结果这些琐碎的“小事”?  阅读全文
posted @ 2011-02-28 15:46 风雷九州 阅读(4223) | 评论 (3)编辑 收藏
     摘要:   平台服务和脚本服务接口对后端PostgreSQL数据库的使用目前采用短暂连接方式,造成多次调用服务时频繁连接和断开数据库,效率很低。

  如果共享数据库连接,则会造成多线程访问数据库时的事务冲突,故必须采用连接池来管理对数据库的并发访问,某一线程连接到数据库使用完毕后,不断开数据库连接,而是把连接归还给连接池。

  另一线程访问数据库时会首先向连接池申请已经存在的连接,如果连接池中没有空闲连接,或者申请到得连接已经超时失效,再建立新的连接,使用完毕后同样归还到连接池。

  这样连接池中的连接数会随着线程压力的增加逐渐增长,直到所有的线程同时工作,达到最多连接数。

  由于一个线程可能同时申请多个连接,故连接数可能会大于线程数。连接池在程序结束时销毁全部连接,或者线程在申请到的某一连接失效时销毁该连接。
  阅读全文
posted @ 2011-02-28 13:57 风雷九州 阅读(5598) | 评论 (0)编辑 收藏