多线程技术探讨
schumyxp
如果你无所不能,那就来当一名程序员吧!
展开
-
建立socket崩溃的问题
前面文章提到的那个用c做的驱动,经常在建立socket的时候出错,而且一出错就是恐怕的崩溃退出。找了好些天原因,今天总算是找到根源了。崩溃的原因是在建立socket的时候,因为上一个socket出错了,所以调用了closesocket方法。但是这个closesocket执行的有些慢,慢到了我的新的socket正在建立的时候,它还没有执行完。于是冲突就来了,一个要建立,一个要关闭,于是崩溃就出现原创 2007-05-10 16:42:00 · 1881 阅读 · 0 评论 -
继续讨论win32下的多线程编程问题
用习惯了c#里面的lock,再来用win32下面的EnterCriticalSection,感觉不太习惯——其实就是不习惯得多打些字的,呵呵。无意中发现了一个叫做mtdll.h的头文件,里面竟然有lock和unlock。大喜!!用msdn搜了一把,没找到相关说明,奇怪哦!仔细看了看mtdll.h的说明,怪不得msdn里面没有它的影子呢,敢情人家写着呢——内部使用!!这么好的东西不拿原创 2007-05-17 11:49:00 · 1097 阅读 · 0 评论 -
服务器端的高性能实现(二)——windows下的第一步实现
既然是windows平台下的开发,就简单随个潮流,用VS2005好了,语言是c#。(其实是因为我熟悉这个,嘿嘿)先开始搭建基本的框架吧。现在也没有太多的设计思路,就先一步一步开始吧,也算是个经验的积累。首先创建一个类库的项目,叫什么呢?好的开始可是成功的一半啊,名字问题足足花了我5分钟的时间——汗。最后起了个很俗的名字:Server4Win。顾名思义,就是windows平台下的se原创 2008-02-14 11:03:00 · 992 阅读 · 1 评论 -
服务器端的高性能实现(三)——框架结构的初步调整
在上次,我完成了一个非常简单的小框架。为了后面的开发,现在是对这个框架做些调整的时候了。首先是配置信息的调整。比如IP和端口,这些东西当然不能写死在代码里面了。为此,先在项目里面建立一个文件夹,起名Config。顾名思义,这里面的东西将来都会是配置相关的代码。这次先在里面添加3个文件。第一个叫做ConfigProvider,它的作用是对外提供配置信息。这一次,就让它提供IP原创 2008-02-14 17:32:00 · 970 阅读 · 0 评论 -
服务器端的高性能实现(五)——对客户端消息的响应和处理
刚从上海回来,竟然又要再去一趟,晕死了。这次我主要添加了处理客户端消息的功能,平台是windows。具体来说,就是添加了两个队列:接收消息队列和等待队列。队列里面都是socket,每个socket对应一个客户端连接。另外,这两个队列都是用链表实现的,实际行为相当于一个循环链表。首先说接收消息队列。如果一个socket有数据可接收,那就把他放到接收队列原创 2008-03-03 21:05:00 · 1165 阅读 · 0 评论 -
服务器端的高性能实现(六)——状态机和线程池的引入
上一次,我添加了调度队列。这次,我将加入状态机以及线程池。我先来说一说状态机,然后再说线程池。写代码也是在干工作。既然干工作,就是为了解决问题。那加入状态机,有什么作用呢?或者说解决了什么问题呢?首先,没有状态机可以不?当然可以,而且没有任何问题,就像我前面的代码一样。加入状态机,就是为了让程序的逻辑更加清楚,运行更加灵活,同时也可以带来更高的效率。不过事情总是两面的,加入状态机后,程原创 2008-03-13 09:17:00 · 2298 阅读 · 0 评论 -
windows版本的服务器端框架代码已经发布了。
我已经把前阵子做的那个服务器端的框架代码上传到CSDN里面了,这次发布的是windows版本的第一版。欢迎大家去下载。地址是:http://download.csdn.net/user/schumyxp/原创 2008-03-20 11:44:00 · 906 阅读 · 3 评论 -
stl库里面的list使用经历总结
最近要用到c++标准库里面的list,但是它又不是支持多线程的。所以我决定对其进行一下改造,变成支持多线程的。思路上面比较简单,模仿C#下面的模式,继承list,然后对用到的方法进行重载,加入lock,变成支持多线程的。实现的时候还是发现了很多问题,主要还是c++可怕的语法,搞了我好几天天。下面就总结一下。首先为了简便,我就不继承了。首先是类的声明:templateclass Sync原创 2008-03-20 11:40:00 · 1256 阅读 · 0 评论 -
服务器端的高性能实现(七)——订阅功能的引入
很多时候,我们会需要这样的功能:1,甲告诉乙,你去监控一个值,每个一秒钟向我汇报一次2,甲告诉乙,我现在要去做别的事情了,委托给你一件事情,5秒钟后你去做要实现上面的场景,就需要一种功能。这种功能,有时候我们称为订阅。就像我们在邮局订了杂志一样,每个月,邮局都会主动把杂志给我们送过来,不用我们每个月都去给邮局打个电话,告诉他给我送杂志来。因为这个功能很有用,也很常用,所以我决定把它加入到这个框原创 2008-05-30 11:55:00 · 1068 阅读 · 0 评论