gpt4 book ai didi

user-interface - 有关 GUI 应用程序中线程数的最佳实践

转载 作者:行者123 更新时间:2023-12-03 18:18:48 25 4
gpt4 key购买 nike

过去,我曾与许多专门编写 GUI 应用程序的程序员共事。

我得到的印象是,他们几乎普遍减少了应用程序中多线程的使用。在某些情况下,他们似乎竭尽全力确保使用单线程。

这是常见的吗?这是 gui 应用程序设计的普遍接受的哲学吗?

如果是这样,为什么?

[编辑]

有许多答案说应该最小化线程使用以降低复杂性。一般来说,降低复杂性是一件好事。

但是,如果您查看对外部事件的响应至关重要的任意数量的应用程序(例如,Web 服务器、任意数量的嵌入式应用程序),似乎对线程使用的态度存在很大差异。

最佳答案

一般来说,GUI 框架不是线程安全的。对于 Swing(Java 的 GUI API)之类的东西,只有一个线程可以更新 UI(否则可能会发生不好的事情)。只有一个线程处理调度事件。如果您有多个线程更新屏幕,则可能会出现一些难看的闪烁和不正确的绘图。

然而,这并不意味着应用程序需要是单线程的。在某些情况下,您不希望出现这种情况。如果您单击一个将 pi 计算为 1000 位数字的按钮,您不希望 UI 被锁定,并且在接下来的几天内该按钮被按下。这是 SwingWorker 之类的东西派上用场的时候。它有两个部分,一个是在单独的线程中运行的 doInBackground(),另一个是由处理在 doInBackground 线程完成后某个时间更新 UI 的线程调用的 done()。这允许快速处理事件,或者在后台处理需要很长时间的事件,同时仍然让单线程更新屏幕。

关于user-interface - 有关 GUI 应用程序中线程数的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/120636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com