我正在寻找一种定期在C++项目中调度任务的可移植方式。在这个特定的项目中应避免使用诸如boost这样的库。
分辨率要求不是太严重:在平均上网本5Hz到20Hz之间。
该项目使用OpenGL来渲染HMI,但由于我在后端部分工作,我不太熟悉它。
感谢您的任何意见或建议, 阿恩
编辑:什么我们的“任务”类实际上做的是创建一个使用任何的CreateThread(..)用于Windows或在pthread_create(..)用于Linux的线程。
我正在寻找一种定期在C++项目中调度任务的可移植方式。在这个特定的项目中应避免使用诸如boost这样的库。
分辨率要求不是太严重:在平均上网本5Hz到20Hz之间。
该项目使用OpenGL来渲染HMI,但由于我在后端部分工作,我不太熟悉它。
感谢您的任何意见或建议, 阿恩
编辑:什么我们的“任务”类实际上做的是创建一个使用任何的CreateThread(..)用于Windows或在pthread_create(..)用于Linux的线程。
作为最简单的方法来实现这个目标是在一个周期内使用睡眠(100ms),您只需要一个便携式睡眠。对于Linux,它可以按如下方式实现:
void Sleep(unsigned long ulMilliseconds)
{
struct timeval timeout;
timeout.tv_sec = 0;
timeout.tv_usec = ulMilliseconds * 1000;
select(1, NULL, NULL, NULL, &timeout);
}
既然你已经知道了一套完整的目标体系,你可以去SQLite方式。他们有完全相同的问题 - 他们使用的很多东西都依赖于系统。
对于每个目标系统,所有依赖于系统的东西都是分别实现的,而正确的版本根据预处理器指令集进行编译。
如果你想要一个周期性的触发器,一个在循环中休眠100ms的线程可能会诀窍。
目标平台是否预先知道? – sharptooth 2009-07-13 09:23:20
当然是:windows xp和linux,可能是ubuntu – Arne 2009-07-13 09:42:36