我有一个带有主线程和诊断线程的程序。主线程基本上是一个while(1)
执行各种任务的循环。其中一项任务是为诊断引擎提供有关系统的信息,然后稍后再检查(即在下一个循环中)以查看是否有任何问题需要处理。主循环的迭代不应超过 0.1 秒。如果一切正常,那么诊断引擎几乎不会花时间返回答案。但是,如果出现问题,诊断引擎可能需要几秒钟来隔离问题。出于这个原因,每次诊断引擎接收到新信息时,它都会启动一个新的诊断线程。
我们遇到的问题是诊断线程正在从主线程中窃取时间。实际上,即使我们有两个线程,主线程也无法像我希望的那样频繁运行,因为诊断线程仍在旋转。
使用 Boost 线程,是否可以限制一个线程在移动到另一个线程之前可以运行的时间量? 这里同样重要的是我们使用的诊断算法是黑盒,所以我们不能在里面放任何线程代码。谢谢!