代码之家  ›  专栏  ›  技术社区  ›  user62572

螺纹的实际用途[封闭式]

  •  3
  • user62572  · 技术社区  · 16 年前

    在你的工作中,你特别使用了什么线程?

    (请给出应用程序的描述以及线程如何帮助/增强应用程序。)

    15 回复  |  直到 10 年前
        1
  •  4
  •   Uri    16 年前

    线程对于大多数ui工作都是至关重要的。否则,任何时候你想做一个计算或任何需要一段时间的事情,你将冻结用户界面。

    因此,大多数gui框架都有处理事件循环(和一些绘图活动)的ui线程,但是大多数用户代码发生在另一个线程中。

    线程也有助于偶尔检查事物或对系统状态作出临时性的改变。

        2
  •  4
  •   duffymo    16 年前

    (不太严肃的回答)我喜欢在任何情况下使用线程,在这种情况下,我希望系统以有趣和不明显的方式崩溃,同时对于我如何让问题溜走仍有合理的可否认性。

    或者,用拉斯莫斯·勒多夫的话说,“人们不够聪明,无法编写线程安全的代码”。

        3
  •  2
  •   Richard    16 年前

    在服务器中处理并发客户端请求。

        4
  •  2
  •   ng.    16 年前

    线程是大多数i/o绑定应用程序和任何相当复杂的服务器端应用程序的基础。考虑一个应用程序,它充当多个数据源的信息交换。您需要能够在独立线程中处理这些信息,特别是如果此数据上的操作受到延迟或需要相当多的时间来完成。

    在大多数情况下,线程通常有助于将应用程序中的各种关注点解耦。在大多数情况下,对相关方的单线调度事件将无法很好地扩展。

    除了最简单的应用之外,所有的线程都需要某种程度的线程。

        5
  •  1
  •   Gulzar Nazim    16 年前

    最常用的是响应式ui,比如显示长时间运行的后台任务的进度条。

        6
  •  1
  •   Nils Pipenbrinck    16 年前

    后台任务:

    • 处理网络连接和协议。
    • 在多媒体应用程序的后台运行声音合成。
    • 在多媒体应用程序(CD流媒体)中在后台加载文件

    其他用途:

    • 通过在两个不同线程中运行同一代码的两个实例来加速某些算法。
        7
  •  1
  •   user23743    16 年前

    我知道大部分时间我使用线程,我实际上想做的是启动一些异步的工作块——也就是说,我希望在神话的“背景”中发生一些事情。不幸的是,考虑线程并不是做“启动一堆工作”的正确抽象级别,因为你没有把一些东西放到后台。使用线程API,您将创建另一个将进程作为进程的原始线程的兄弟姐妹运行的地方,并且需要担心它们之间共享什么信息、以及如何等等。这就是为什么我喜欢新的api,比如cocoa NSOperation NSOperationQueue 是的。在这个api的例子中,启动某个工作包只是一行代码,库负责处理是应该启动一个新线程还是重用一个旧线程。

        8
  •  0
  •   Otávio Décio    16 年前

    扫描目录以查找更改的文件。在每个子目录中生成一个线程,然后在一个线程中生成线程要快得多。

        9
  •  0
  •   Lieven Keersmaekers    16 年前

    我们已经在多个应用程序中使用了线程,其中主屏幕由适合当前登录用户的工作流组成。

    获取工作流可能需要大量时间。工作流的各个部分由不同的线程加载。对于我们的主应用程序bp/gena,大约触发了11个线程,每个线程运行一个数据库查询。

    当做,
    利芬

        10
  •  0
  •   womble    16 年前

    当我想用一堆我知道需要很长时间的资源做一些事情时,当处理元素的工作之间没有相互依赖关系时,特别是当瓶颈不是本地资源(如磁盘的CPU),我最常用线程。例如,如果我要检索一堆url,那么每个url都将进入一个单独的线程。

        11
  •  0
  •   Rick    16 年前

    这是一个非常普遍的问题。我使用“线程”来消除ui线程的潜在阻塞工作,无论该工作是本地的还是网络的i/o,或者该工作是计算密集型任务,这些任务往往会“阻塞”取决于运行它的硬件。

    我认为询问一个特定的问题或模式有助于减轻它和对线程的适用性,即:

    • 线程如何与模型相关 视图控制器?
    • 我应该怎样或者为什么 将ui线程的工作转移到 确保用户界面不会思考 封锁?
    • 线程池如何 用于递归(网络) 作为其他人遍历目录 暗指?
    • 我应该亲热一下吗 协同调度的线程 计算密集型任务,或 我应该用一个线程池 让操作系统预先调度 它认为合适的线。

    这是一个相当广阔的空间,更清晰可能会有帮助。

        12
  •  0
  •   Guffa    16 年前

    我构建web应用程序,所以我编写的所有代码都在多个线程中执行。

        13
  •  0
  •   TMN    16 年前

    我们的应用程序是一个web服务,因此我们为每个请求生成一个线程。从技术上讲,jni是从线程派生出来的,但是代码必须是线程安全的。我们已经遇到了一些有趣的(FSVO)问题,既有Hibernate和基于ESB的基础设施,但在大多数情况下,在ThreadLocals保持事物,并在子系统入口点上同步已经很好。我们还没有尝试过几十个同时请求,所以我们可能还没有确定一些比赛条件,但总体来说,我们表现出色并给出正确的答案。

        14
  •  0
  •   recursive    16 年前

    我编写了一个函数,它生成一个线程,该线程每隔一段时间(从扬声器)发出哔哔声,提醒测试操作员需要注意一些事情。响应模式对话框后,线程将被终止。

        15
  •  0
  •   Beep beep    16 年前

    与工作无关,但我在 Netflix Prize 是的。我的电脑有8核和20GB的内存…只运行一个线程是完全浪费,所以我通常启动16个线程左右。