社区
C#
帖子详情
定时器对系统资源的消耗大不大?
leonlux
2005-04-03 11:06:41
我想做个c/s系统(类似于IM)。其中服务器和客户端不面向连接,服务器为每个客户端提供一个定时器,客户端定时向服务器发送“在线”消息,服务器更新定时器;若定时器超时,则服务器认为客户端已下线。现在就有一个问题,如果客户端很多的话,那服务器也相应会产生很多个定时器,这样会不会很消耗系统资源?如果是,请问有没有什么好的设计方法或算法,谢谢。
...全文
1054
20
打赏
收藏
定时器对系统资源的消耗大不大?
我想做个c/s系统(类似于IM)。其中服务器和客户端不面向连接,服务器为每个客户端提供一个定时器,客户端定时向服务器发送“在线”消息,服务器更新定时器;若定时器超时,则服务器认为客户端已下线。现在就有一个问题,如果客户端很多的话,那服务器也相应会产生很多个定时器,这样会不会很消耗系统资源?如果是,请问有没有什么好的设计方法或算法,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jb303
2005-04-09
打赏
举报
回复
应该想办法只用一个定时器,thinking
感觉只需要一个,flyhover(飞翔)的办法也不错啊
niunj
2005-04-09
打赏
举报
回复
可以作成静态的
可以用定时器组建做 也可以用线程中的timer做
thundersoft
2005-04-09
打赏
举报
回复
定时器,mark:)
xiaomatian
2005-04-09
打赏
举报
回复
关注
broadury
2005-04-08
打赏
举报
回复
我认为不是timer本身消耗的资源大不大,而是每次timer触发事件的开销大不大。
只要触发事件的间隔不太小,每次事件触发的开销不太大,应该就可以了。
当然,timer的数量不要太多了
leonlux
2005-04-08
打赏
举报
回复
不能说能象QQ一样,至少百来人在线应该是要可以应付的啊。
__ANDY__WU
2005-04-08
打赏
举报
回复
单单一个定时器应该占不了多少资源吧。主要是看你定时处理的事务所占的资源多不多。还有你定时器的频率。如果在线用户很多的话,系统开销就变成一个很大的问题了。
你是想实现成像QQ一样的吗?
leonlux
2005-04-05
打赏
举报
回复
还有一个问题,定时器到底对系统资源的消耗大不大?
__ANDY__WU
2005-04-04
打赏
举报
回复
没有必要发送下线通知啊,只要检查它的登记时间大于30秒的话就认为该客户端已经下线了。
leonlux
2005-04-03
打赏
举报
回复
to:hwxnhk0326 ,但是如果客户下线,服务器要进行相应的清理操作,所以服务器必须要知道客户端是否已经下线。在正常情况下,客户端下线时会发一个“下线”消息到服务器的。
__ANDY__WU
2005-04-03
打赏
举报
回复
最好,全部通过客户端来完成!
客户端每隔一段时间比如(20秒)发“我在线”的消息给服务器,服务器登记一下接收到消息的时间。
客户端要查看 其他客户端是否在线 的话就查找一下服务器上登记的时间,如果登记时间和当前时间相差30秒则该用户不在线,如果小余30秒则在线!
leonlux
2005-04-03
打赏
举报
回复
to:wolfofsky(风之武) ,一个定时器怎么做?
to: gdami(糖米) ,面相对象和一个客户端用一个定时器有什么矛盾吗?
flyhover
2005-04-03
打赏
举报
回复
up
gdami
2005-04-03
打赏
举报
回复
现在是面向对象编程了。
那用每个客户端一个。
karykwan
2005-04-03
打赏
举报
回复
应该不大,不知QQ是如何做的.像现在统计在线时间...
Abel.Liu
2005-04-03
打赏
举报
回复
使用一个定时器即可完成此任务
lucbesson
2005-04-03
打赏
举报
回复
http://community.csdn.net/Expert/topic/3897/3897755.xml?temp=.7407953
帮忙顶一下 我结帖
leonlux
2005-04-03
打赏
举报
回复
to:flyhover(飞翔),我曾经想过你的想法,虽然在单线程的环境可以很好运作,但是在多线程环境处理起来就很麻烦。因为正常“上线”,“下线”的事件处理和清理“伪下线”的操作都要使用同一个“用户状态表”,很难做到同步而又不失性能。
gdami
2005-04-03
打赏
举报
回复
flyhover(飞翔) 说得很清楚了。 服务器只要一个定时器。
flyhover
2005-04-03
打赏
举报
回复
即使客户端不发送“下线”消息到服务器(肯定会经常发生),只要服务有一定时器,每30秒检查一遍所有客户端最近一次发“我在线”时间是否小于30秒,大于30秒的客户端就已下线,服务器对其进行下线处理。
11---
定时器
和时间管理
内核中哪些函数需要定期执行? 对调度程序中的队列进行平衡调整的函数 对屏幕进行刷新的函数 内核如何计算和管理时间,HZ、节拍和节拍率是什么? 内核借助系统
定时器
计算流失的时间,系统
定时器
以一定的频率(预定义,也称节拍率或HZ)触发时钟中断,内核通过两次时钟中断的间隔计算(也称为节拍)和管理时间。 什么是系统运行时间? 自系统启动开始所经历的时间。 系统
定时器
使用高频率有哪些优点? 更...
Windows中7种
定时器
(VC
定时器
种类及占用资源对比)
VC中提供了很多关于时间操作的函数,利用它们控制程序能够精确地完成定时和计时操作。本文详细介绍了VC中基于Windows的精确定时的七种方式,如下图所示: 图一 图像描述 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数
利用一个硬件
定时器
实现多个虚拟
定时器
的两种方法
第一种方法比较适合单片机,第二种方法在 PC 上很有优势。 1.固定周期法 使用一个硬件
定时器
进行固定周期(比如 1m s)定时,用一个结构体数组作为软
定时器
描 述表, 数组的结构体数就是最大虚拟
定时器
的数量, 每个结构体的成员都包括虚拟
定时器
状 态(空闲、激活、运行、超时触发、周期触发)、定时值(换算成定时周期数,例如 1m s 的硬 件定时周期, 现进行 125m s
定时器
原理
1.
定时器
介绍 程序里的
定时器
主要实现的功能是在未来的某个时间点执行相应的逻辑。在
定时器
模型中,一般有如下几个定义。 interval:间隔时间,即
定时器
需要在interval时间后执行 StartTimer:添加一个
定时器
任务 StopTimer:结束一个
定时器
任务 PerTickBookkeeping: 检查
定时器
系统中,是否有
定时器
实例已经到期,相当于定义了最小时间粒度。 常见的实现方法有如下几种: 链表 排序链表 最小堆 时间轮 接下来我们一起看下这些方法的具体实现原理。 ..
C#
定时器
的高级用法灵活定制与扩展
对于长时间运行的
定时器
,需要注意资源
消耗
的情况,避免影响系统性能。总结起来C#
定时器
提供了丰富的高级用法,可以根据需求进行灵活的定制和扩展。这些高级用法可以提升
定时器
的灵活性、稳定性和可维护性,以满足各种复杂的定时任务需求。这些高级用法可以根据具体的需求进行扩展和定制,以满足更复杂的定时任务的要求。无论是控制
定时器
的启动和停止,还是实现多线程
定时器
或周期性任务调度,C#的
定时器
提供了灵活的机制来满足不同的需求。在C#中,有几种不同的
定时器
可供选择,每种
定时器
都有其特定的特点和应用场景。
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章