LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1946|回复: 0

求助:关于嵌入式Linux中多线程定时器的问题

[复制链接]
发表于 2007-11-22 15:36:05 | 显示全部楼层 |阅读模式
Linux内核的定时器运行于软中断,定时器处理函数不允许睡眠。现在,我想把
他改成基于多线程实现的,允许睡眠。想法是:预先创建一组线程(线程池),供定时
器在到期时使用,每个定时器到期后就从线程池中取一个线程运行,运行后返回给线程
池。由于各个定时器是单独一个线程运行的,因此可以睡眠。
由于我的定时器是在嵌入式系统上跑的,考虑到嵌入式设备内存紧张的缘故,系统对线程
数作了限制,目前在小内存系统上是限制为200个线程,因此我的定时器模块不能使用太
多线程。我目前的想法是预先创建一个具有50个线程的线程池,但是现在担心的是,如果
有500个同时到期的定时器,我该如何处理?先处理50个?余下的延迟处理?如果先前的
50个很快就处理完了,这倒是没关系,但就是担心这50个全都挂起了,这样后面的450个
不都处理不了了?还有其他时间到期的定时器呢?
一直想在串行执行和并发执行间找到一个平衡点,可是现在不知道该采取怎么样的办法
比较妥当,特别是在对付大量同时到期又都需要挂起的定时器的时候。当然,会同时到
期并且挂起的定时器一般都是在等待某个资源,总会有一个先执行完的时候。但是这样
一个一个处理,又霸占着线程池的线程,导致其他定时器到期后只能等待,也是一种痛
苦。
该如何解决比较妥当?希望大家帮忙想想,谢谢!
说明一点:我的多线程定时器是基于Linux 2.6内核的定时器进行改进的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表