当前位置:  开发笔记 > 运维 > 正文

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

如何解决《有关GUI应用程序中线程数的最佳实践》经验,为你挑选了2个好方法。

在过去,我曾与许多专门编写GUI应用程序的程序员合作过.

我得到的印象是,他们几乎普遍最小化了在他们的应用程序中使用多个线程.在某些情况下,他们似乎已经竭尽全力确保他们使用单个线程.

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

如果是这样,为什么?

[编辑]

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

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



1> Richard..:

我认为就Windows来说,你只限于在一个线程上发生的所有GUI操作 - 由于windows消息泵工作的方式,为了增加响应性,大多数应用程序添加至少一个额外的工作线程,否则会阻止更长时间运行的任务使ui反应迟钝.

线程从根本上来说很困难,所以用一些线程或多个线程进行思考通常会导致大量的调试工作 - 有一个引用现在就让我感到厌烦 - "如果你认为你理解线程那么你真的没有"



2> Steve g..:

一般来说,GUI框架不是线程安全的.对于像Swing(Java的GUI API)这样的东西,只有一个线程可以更新UI(或者可能发生不好的事情).只有一个线程处理调度事件.如果你有多个线程更新屏幕,你可能会得到一些丑陋的闪烁和不正确的绘图.

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

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有