win32/64
oldworm
这个作者很懒,什么都没留下…
展开
-
三种线程池比较
作者:oldworm () 可任意转载但请指明原始链接http://www.shprog.com/others/threadpoolcomp.html 服务器程序最核心的任务之一就是处理一组任务,在处理一组任务的时候最常见的做法是用线程池,最常见的线程池一般是由一组线程等待在一个信号灯上,有一个任务到达后解锁一个线程,让该线程去处理任务,线程处理完成后又回归到线程池,此做法比来一个任务原创 2007-05-23 13:29:00 · 3131 阅读 · 2 评论 -
各线程同步操作性能列表
执行100w次的结果(单位:微妙)------------------------------------------------------------------------------------线程 volatile读 volatile写 InterlockedInc CS SRWLock共享 SRWLock独占 互斥量 1 8 8原创 2010-03-09 00:54:00 · 1189 阅读 · 1 评论 -
唯一id分配策略
有些时候需要给资源分配一个唯一id(32bit or 64bit or CHAR[N]),这里主要说下分配方法问题。首先我们有个基本前提,如果是单线程分配,那么我们无需下面的方法,直接++value即可(CHAR型无论几线程都可使用GUID)顺序产生不重复序列,下面讨论的方法都是多线程下的分配策略:方法1、 win下做简单的方法莫过于使用InterlocckedIncrement(or I原创 2010-03-12 00:00:00 · 3584 阅读 · 2 评论 -
从web体系学习服务器端程序设计
我一直坚持一个观点,从web体系学习服务器端程序设计,web作为发展最早也是前景最广阔的internet模型,几乎支撑了网络世界一半以上的应用,其他email ftp等传统应用虽然产生时间也很早但几乎都很没落,只有web风采依旧,蓬勃发展,从apache到lighttp到nginx等,一个接一个高性能的web服务器程序分别被开发出来,上层应用cgi, isapi(nsapi), fastcgi助力原创 2010-03-30 12:33:00 · 1589 阅读 · 1 评论 -
HashCrack程序数据及索引设计2
<br />HashCrack程序数据及索引设计2<br /> <br /> <br />上个月写了《HashCrack程序数据及索引设计》里面已经提到早期设计的几种存储方法,最后达到了每条记录15个字节左右的水平,但这个存储效果还是很差的,而且是单体文件,受制于内存限制,后来又设计了几种复合索引格式,支持1万亿记录一个复合索引,下面简单讲讲之后的研究成果。<br />6、将内容区和索引区合并,索引位置不再提供指向内容区的size_t,内容区不再需要,直接在索引区,这样索引区indexnode<br />S原创 2010-06-30 14:12:00 · 826 阅读 · 1 评论 -
Json解析速度问题
<br />一直想测试一下json的解析速度,前些天终于花了一点时间测了一下,在我的破笔记本上,解析一个包含10个元素(各种类型都有)的object型json,1秒钟大概只能解析不到10w次,就算把内存池用到极致也只能解析12.5w次左右,换用自己定义的一种bjson格式,速度快了一些,但也不超过20w次,想想工作量也的确很大,生成一个包含10个子元素的object,需要动态分配最少10次,还要做最少10次hash的insert,还有各种格式的转换工作,里面有array和object还要额外分配容器并处理子原创 2010-08-11 22:04:00 · 9580 阅读 · 1 评论 -
我的网络模块设计第一版
<br />我的IOCP网络模块设计<br /> <br />为了设计一个稳定易用高效的iocp网络模块,我前前后后花了好几个月的时间,也曾阅读过网上很多资料和代码,但是非常遗憾,能找到的资料一般都说得很含糊,很少有具体的,能找到的代码离真正能商用的网络模块差得太远,大多只是演示一下最基本的功能,而且大多是有很多问题的,主要问题如下:<br />1、 很多代码没有处理一次仅发送成功部分数据的情况。<br />2、 几乎没有找到能正确管理所有资源的代码。<br />3、 大多没有采用用pool,有的甚至原创 2010-10-03 00:25:00 · 2013 阅读 · 1 评论 -
我的网络模块设计第二版
07年我写了一篇文章叫《我的iocp模块》,姑且叫那个为第一版吧,由于持续对网络模块进行改进,所以现在的实现和当时有很大改变,加上上层应用越来越多,又经过了几年时间考验,现在的实现方式比之前的更灵活更有效率,也因为最近看了一些人做网络程序多年竟毫无建树,一直要用别人写的网络模块,所以有感而写此文,为了使得此文不受上一篇《我的iocp模块》的影响,我决定写之前不看原来的文章,所以此文跟原文那篇文章可能没有太多相似性。一个基本的网络模块,无非就是管理N个连接,快速处理每个连接的收发数据、消息等,所谓好的网路模块原创 2010-10-03 00:27:00 · 2919 阅读 · 13 评论 -
time_t的局限性及时间函数设计
time_t的局限性及时间函数设计 time_t早期是32位的,用来表示从1970.1.1开始的秒数,当初设计的时候受制于32位的容量,time_t只能表示136年的时间,而且精度只能到秒,后来time_t修改为64位,但仍然兼容了原来的设计,time_t虽然现在默认64位了但依然精度为秒,这是极大浪费的。系统还有很多time相关的函数,如win下mktime、gmtime、GetSy原创 2012-06-27 11:45:01 · 10354 阅读 · 1 评论