在一个线程内,每100毫秒精确送受信一次

pujitan978 2019-07-04 09:43:48
在一个线程内有送受信处理,需要是每100毫秒内送受信一次,如果在受信后面加sleep 100毫秒,送收信处理也需要时间(时间不等),总时间间隔大于100毫秒了。怎么保证100毫秒触发一次送信收信呢。送收信处理线程有几十个。
...全文
193 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
desperaso 2019-07-04
  • 打赏
  • 举报
回复
http://www.it1352.com/24356.html
https://www.cnblogs.com/jintianhu/archive/2010/09/01/1815031.html

也不是很准

[DllImport("winmm.dll", EntryPoint = "timeBeginPeriod")]
public static extern uint _BeginPeriod(uint uMilliseconds);
[DllImport("winmm.dll", EntryPoint = "timeEndPeriod")]
public static extern uint _EndPeriod(uint uMilliseconds);

int _speed = xxx;
线程里
_BeginPeriod((uint)_speed);
........................
........................
_EndPeriod((uint)_speed);
正怒月神 2019-07-04
  • 打赏
  • 举报
回复
引用 4 楼 wanghui0380 的回复:
[quote=引用 3 楼 正怒月神 的回复:] 好像最近都是类似的问题。 你别让一个进程去做,你就用多线程的timer去搞,每100ms自己开个线程去执行任务就好了。 注意,这里是多线程的timer。不是 winform命名空间下的timer
所以在你帖子也说了,以后不会并行,并发,不会同步,异步,不会函数式的俺们不跟他们玩了,玩不到一块。解释的费劲。[/quote] 是的,互联网发展太快,已经不是简单的页面展示,数据库增删改查了。 不懂并发,并行,异步等等的概念,在当今软件行业,路会很窄。
wanghui0380 2019-07-04
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神 的回复:
好像最近都是类似的问题。 你别让一个进程去做,你就用多线程的timer去搞,每100ms自己开个线程去执行任务就好了。 注意,这里是多线程的timer。不是 winform命名空间下的timer
所以在你帖子也说了,以后不会并行,并发,不会同步,异步,不会函数式的俺们不跟他们玩了,玩不到一块。解释的费劲。
正怒月神 2019-07-04
  • 打赏
  • 举报
回复
好像最近都是类似的问题。 你别让一个进程去做,你就用多线程的timer去搞,每100ms自己开个线程去执行任务就好了。 注意,这里是多线程的timer。不是 winform命名空间下的timer
wanghui0380 2019-07-04
  • 打赏
  • 举报
回复
windows这种平台并非“实时系统”-------他是多任务并发平台,他保证的是尽可能被处理,而不是“精确”处理 所以没有什么精确保证。你只能说我们可以使用异步,使用 await Task.Yield();尽快让出位置,进行“节流”操作 所以,你可以100毫秒产生一个task,然后让系统去并行执行,而task尽量优先让位,尽量异步处理
OrdinaryCoder 2019-07-04
  • 打赏
  • 举报
回复
Windows下想要精确到100ms那可相当费劲了 感觉直接换成timer凑合用把 那种能精确到100ms的方式成本什么的可能都太高了
正怒月神 2019-07-04
  • 打赏
  • 举报
回复
引用 1 楼 好奇都是要学的 的回复:
知道了概念也没用,这个要大量的项目去调试。 尤其并发和多线程 。 异步到容易点。
只是想表达,现在的技术已经不是局限于几年前哪种会配置数据库,会增删改查这种了
  • 打赏
  • 举报
回复
引用 5 楼 正怒月神 的回复:
[quote=引用 4 楼 wanghui0380 的回复:] [quote=引用 3 楼 正怒月神 的回复:] 好像最近都是类似的问题。 你别让一个进程去做,你就用多线程的timer去搞,每100ms自己开个线程去执行任务就好了。 注意,这里是多线程的timer。不是 winform命名空间下的timer
所以在你帖子也说了,以后不会并行,并发,不会同步,异步,不会函数式的俺们不跟他们玩了,玩不到一块。解释的费劲。[/quote] 是的,互联网发展太快,已经不是简单的页面展示,数据库增删改查了。 不懂并发,并行,异步等等的概念,在当今软件行业,路会很窄。[/quote] 知道了概念也没用,这个要大量的项目去调试。 尤其并发和多线程 。 异步到容易点。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧