我对实时编程/多线程还很陌生,我正在尝试进行一些实际的开发。我正在尝试为一个学校项目编写一个程序(用 C 语言),该项目执行多项任务,包括图像处理(openCV)、服务网页(使用 libmicrohttpd 之类的库)以及与外围设备的接口。该程序将有大量线程,每个任务基本上都是独立运行的。
该程序的一个非常重要的部分是事件/数据记录和在外围设备上设置时钟,这需要计算机的板载时间。也就是说,不止一个线程将需要当前时间作为其任务的一部分。所以我的问题是,声明一个全局时间结构并根据单个线程的需要调用 gettime 是更好的主意,还是拥有一个始终保持当前时间的单独线程,然后每个线程都从中读取?前者听起来可能存在访问问题,而后者听起来很难以适当的频率更新。
为了更详细地了解我正在执行的任务:
- 每当opencv检测到某个对象时,我都会保存包含时间的图像和文本日志
- 我正在记录从外围设备收到的最后十个数据包的时间(这是一个非常低的数据速率连接)
- 外设没有板载 RTC,所以当它连接或漂移太远时,这个程序会设置它。
感谢您的任何建议。