我有一个(软)实时系统查询一些传感器数据,做一些处理,然后等待下一组传感器数据。传感器数据在接收器线程中读取并放入队列中,因此主线程正在“睡眠”(通过互斥锁),直到新数据到达。实现低优先级后台线程的模式?
还有其他一些任务,如日志记录或在后台进行一些长期计算。这些被实现为在其他线程中运行。
但是,当主线程处理传感器数据时,它应该具有最高的优先级,这意味着其他线程应该不会消耗任何CPU资源(当前后台线程会导致主线程以不可接受的方式减慢。)
根据Setting thread priority in Linux with Boost,有人怀疑设置线程优先级会完成这项工作。我想知道如何衡量哪些效果设置线程优先级真的具有? (平台:Angstrom Linux,ARM PC)
有没有办法“完全暂停”和“继续”线程?
C++中是否有模式可能会实现暂停/继续我自己? (我也许能够在后台工作拆分成小块,如果允许我继续我的工作的每块后检查,但问题是,这些块应该多大等)
感谢您的想法!
为什么不只是创建接收者线程和主线程具有很高的优先级?当传感器线程设置准备好驱动程序,它将运行使用全部CPU的,当它设置互斥锁的主线程将与所有的CPU的运行,(当然一旦传感器螺纹回来等待它的驱动程序) 。如果做不到这一点,你可以将部分/全部传感器数据处理到传感器的驱动程序? –