【发布时间】:2016-05-24 20:39:21
【问题描述】:
我们正在为 VxWorks 实时操作系统使用嵌入式 C。
目前,我们所有的 UDP 连接都以TaskSpawn() 开始。
此例程创建并激活具有指定的新任务
优先级和选项并返回系统分配的 ID。
我们指定任务大小、优先级并传入一个入口点。
这些是连续的连接,因此每个入口点都包含一个无限循环,我们在下一次迭代之前延迟。
然后我发现了period()。
period 产生一个任务来周期性地调用一个函数。
Period 听起来像是我们应该改用的,但我找不到任何信息说明您何时更喜欢这个函数而不是 TaskSpawn。 Period 也不允许指定任务大小或优先级,那么它是如何决定的呢?任务大小是动态的吗?优先级是什么?
还有watchdogs。
任何任务都可以创建一个看门狗定时器并使用它来运行指定的 系统时钟 ISR 上下文中的例程,在指定之后 延迟。
同样,这似乎符合以特定速率处理数据的目标。当任务必须以相同的速率(即实时)连续执行代码时,我该选择哪个?
这3种方法有什么区别?
【问题讨论】:
标签: c multithreading real-time vxworks