如何编写一个只绘制Text和setPixel而不进入main_loop的wxRuby程序?

发布于 2024-09-12 10:42:19 字数 195 浏览 12 评论 0原文

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

  1. 有没有一种方法可以在没有事件循环的情况下绘制项目?

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

I want to write a program that will constantly compute numbers, and draw on the window canvas, including drawing text and setting pixels. So the program probably cannot go into an event loop (the main_loop), because that will stop the computation of numbers.

  1. Is there a way just to draw the items without an event loop?

  2. Or, should a thread be created, so that one thread will do the computation, and one thread handles the window's event loop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青衫负雪 2024-09-19 10:42:19

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

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

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

The general strategy for event-based programs that must do long calculations is one of the following:

  1. break the calculations into small chunks that take no more than a few 10's of milliseconds, then schedule them to run one after the other when the event loop is idle. Remember: the event loop is just a loop, so if your long running calculation is just a huge loop of tight and fast code let the event loop be your loop.
  2. put the long running calculation in a separate thread and have that thread communicate its results back to the main thread in a thread-safe manner
  3. put the long running calculation in a separate process and have that process send updates back to your main process

The first method is ideal if you can manage it. My personal preference then goes to the third method. IMO threads should be avoided if at all possible, unless you fully grok threaded programming (and even then I still usually recommend a separate process).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文