【发布时间】:2010-03-03 12:25:40
【问题描述】:
我正在开发一个实时成像系统。
UI 线程:通过计时器以 14 fps 的速度从相机中抓取图像并进行一些处理/显示。每 2 秒,通过处理选择 3 个图像(每个在磁盘上大约 1mb)写入磁盘。这些被放入共享队列中。
第二个线程:将图像出列并写入磁盘。已被赋予“最低”优先级。
当第二个线程执行写入时,它会从 UI 线程中占用大量性能,并导致捕获速度降至 14 fps 以下。不可接受。
我可以在这里做什么?我不介意写入是否需要更长的时间并排队,有足够的 RAM 和定期暂停以允许写入赶上。关键因素是 UI 线程有足够的汁液以 14 fps 的速度工作。
【问题讨论】:
-
您是否从后台线程调用任何 UI 更新?它真的不应该影响你的 UI。
-
等等,你为什么要在 UI 线程上从相机中抓取图像?
-
没有人拥有单核 CPU。您正在执行某种锁定,这会减慢捕获图像的线程。
标签: c# multithreading real-time