0

我想编写一个程序,不断计算数字,并在窗口画布上绘制,包括绘制文本和设置像素。所以程序可能无法进入事件循环(main_loop),因为这将停止数字的计算。

  1. 有没有办法在没有事件循环的情况下绘制项目?

  2. 或者,是否应该创建一个线程,以便一个线程进行计算,而一个线程处理窗口的事件循环?

4

1 回答 1

0

必须进行长时间计算的基于事件的程序的一般策略是以下之一:

  1. 将计算分成不超过几十毫秒的小块,然后在事件循环空闲时安排它们一个接一个地运行。记住:事件循环只是一个循环,所以如果你的长时间运行的计算只是一个由紧凑而快速的代码组成的巨大循环,那就让事件循环成为你的循环。
  2. 将长时间运行的计算放在一个单独的线程中,并让该线程以线程安全的方式将其结果传达回主线程
  3. 将长时间运行的计算放在一个单独的进程中,并让该进程将更新发送回您的主进程

如果您可以管理它,第一种方法是理想的。然后我的个人偏好转到第三种方法。如果可能的话,应该避免使用 IMO 线程,除非您完全了解线程编程(即便如此,我仍然通常建议使用单独的进程)。

于 2010-08-20T16:51:53.217 回答