这个配置加一个4G内存条可以玩绝地求生大逃杀内存条吗?

&&&&& 利用C写过服务器编程的同学想必都熟悉定时器;可能都还研究过。下面就来聊聊定时器的实现;
一般定时器就是在程序处理业务的过程中设置了一个时间 比如5 s 当程序运行5s后这个定时器就要超时,一般超时都有一个动作也就是定时器处理函数 ; 比如清理资源或者是触发事件等;从这一点上说定时器的实现好坏不仅影响到系统的准确性,而且会影响系统的稳定性和可生产性。你如果在查定时器超时的逻辑消耗的时间过多,其结果是不准确 而且会导致系统性能问题,来不及处理更多的业务;
&最简单的定时器可能就是设置一个信号了,signal(SIGALRM, SigHandler)但是这种有个缺点,就是信号中断的问题,如果程序正在执行系统调用的话信号中断后,程序还会回到系统调用继续执行吗?如果不清楚的同学可以百度一下;
&&&&& 广义上的定时器应该是通过巧妙的数据结构实现的,当时就很好奇其中的奥妙,当时自己认为定时器的实现应该就是一个有序的链表。即所有定时器元素通过链表的形势串在了一起,而且是最先超时的放在了头,定时器元素应该有一个剩余时间项比如 系统在运行的过程中同时也对这个链表进行了维护,即每次扫描过程中都需要检测链表的头元素还剩下多少时间,比如还剩下5秒那么就可以直接将头元素的值设置成0 然后休眠5秒后直接将头元素超时掉,这样一来可以避免频繁的调用休眠函数带来的损耗;但是当有新的设置定时器动作怎么处理呢?首先一点就是要将这个定时器加入到这个链表当中去,这个是肯定
的,链表的插入,很简单,和第一个元素进行比较发现是5s好,而自己是10秒超时,那么自然是要放到后面去,但是这时这个10需要调整一下,不然就会出现多等待的情况了,应该是调整到10-5 秒;好一个大于5s定时器设置好了,10秒后,必定超时,呵呵,假如这时又设置了一个定时器比如是3秒,那么如果解决呢,3秒比5秒小应该放在最前面,但是问题来了,当插入后,后面所有的元素都需要进行一次时间调整; 现在后面只有两个元素自然没有问题; 但是从工程的角度看这个问题就大了,会导致性能瓶颈。我是爱钻牛角尖的人,这样就开始朝这个思路将设置复杂话了,当时是想再创建新的链表将3秒的定时器与之前区分开,并且复杂化数据结构,采用链表套用链表的方式来进行,也就是3秒的这个所有的链表超时后再进行下一个链表的超时操作,进行下一个链表的操作时首先进行一个默认的相减操作,
也就是肯定不会是5秒,至多是2秒。这样的设计虽然嘴巴上说话是差不多,但是计算机可不是人,不会听你忽悠,如果设计上存在哪怕1%的不足都会行不通,导致返工,耽误时间;设计应该讲究精妙,而不是繁琐。程序如果 越复杂出现 问题就越难解决。这是前人总结的应该不会错。那么好,现在如何 解决这个棘手的问题呢? && &欲知后事如何 请听下回分解
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:368次
排名:千里之外

我要回帖

更多关于 加一个4g内存条多少钱 的文章

 

随机推荐