Joeya2012
2015-05-16 06:15
采纳率: 100%
浏览 3.1k
已采纳

ARM9 + Linux多线程精确的定时器

最近公司有个项目平台是ARM9 + linux, 在开发过程中遇到一个问题: 有一部分CAN通讯,需要250ms定时发送一帧数据包。于是我用select做了一个定时器发送。但是当这个多线程的程序真正跑起来,在接受端进行检测。结果收到的该帧的时间间隔竟然是330ms左右。虽然预先我知道有偏差,但是330的时间间隔确实大大超出了预期!如果用setitimer的话,一是资源少,二是信号如果加入程序中,可能会带来很多不必要的BUG。哪位大神有更好的定时器方法???

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dinkyFan 2015-05-16 06:42
    已采纳

    select定时器的精度是ms级,即使系统调度会出现延时,不可能延时达到100ms以上,再看测试用例,发送数据并在接收端接收网络数据,因此估计延时时间的误差应该是网络数据发送和接收引起的,所以root cause 不在于定时器。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题