【发布时间】:2014-11-21 01:17:38
【问题描述】:
我正在尝试找到一个可以以抢先方式处理任务(或线程)的 c 或 c++ 库。我需要一种机制,可以像在 RTOS 中一样逐个管理任务。创建任务(作为任务的入口点)、时间切片、切换等......
可以写在用户空间吗?
【问题讨论】:
-
我认为,如果没有一些特定于平台的东西,那就很难了。据我所知,没有(C++ 特定的)机制可以在线程执行时中断它。你需要一个计时器来实现抢占。
-
您使用哪个平台进行开发?
-
目前(用于模拟目的)它是 x86 和 linux。真正的 RTOS(我认为它将是 RTEMS)将用于 ARM。
-
你可以试试 Linux 调度 api,比如 sched_{get,set}scheduler 来操作任务的优先级/策略。
-
如果你使用的是windows,你可以使用SetThreadPriority(),但是优先级的数量是有限的。对于我过去从事的嵌入式项目,一个常见的限制是 16 个线程,每个线程都有不同的优先级(这种设置没有时间切片)。
标签: c++ c task simulation rtos