线程的实际用途


3

在您的工作中,您使用线程的具体内容是什么?

(请提供该应用程序的说明和线程如何帮助/增强的应用程序。)

+2

这不是很具体。有真正的问题吗?我认为我们大多数人都使用线程来完成数百个任务。你可能会问我们用了什么“if语句”。 22 2月. 092009-02-22 01:03:36

+1

给我一点点家庭气氛。 22 2月. 092009-02-22 01:07:29

  0

哈哈,你好,听起来有点家常。 22 2月. 092009-02-22 01:23:46

  0

听起来更像是一个工作中的应用问题,而不是作业... 22 2月. 092009-02-22 01:31:26

  0

也许,虽然我承认,虽然仍然在学校里,可能很难看到所有垃圾被扔向你的适用性,所以我会给OP怀疑的好处。 22 2月. 092009-02-22 01:31:32

  0

Andrew:可能吧,但是关于上下文的更多信息会很好。即使只是说出你刚刚做的事情,也会帮助我们找到实际有用的答案。 22 2月. 092009-02-22 01:33:38

0

要扫描目录,寻找已更改的文件。为每个子目录产生一个线程然后在一个线程中执行它会更快。

  0

但是,为每个子目录产生一个线程比使用固定大小的工作线程池更快? 22 2月. 092009-02-22 01:59:02

  0

我确实使用线程池。 22 2月. 092009-02-22 02:14:12


1

最常见的用途是resposive用户界面,如显示长时间运行的后台任务的进度条。

  0

在某些情况下,显式消息抽水工作差不多,也是和更容易的事,即使线程是“正确”的方法。 22 2月. 092009-02-22 01:25:54


4

线程对于大多数UI工作来说至关重要。否则,任何时候你想要做一个计算或任何需要一段时间,你会冻结用户界面。因此,大多数GUI框架都具有处理事件循环(和一些绘图活动)的UI线程,但大多数用户代码都发生在另一个线程中。

线程还可用于偶尔检查事件或对系统状态进行偶发性更改。

  0

这是线程的一种可能的用法,但说“大多数GUI框架有UI线程......但大多数用户代码发生在另一个线程中”是不正确的。 那一直没有在任何GUI框架,我用了常见的情况。 22 2月. 092009-02-22 02:08:54

  0

你是对的,术语GUI框架不正确,因为这意味着一个GUI工具包。我的意思是构建应用程序的框架,比如Eclipse。 22 2月. 092009-02-22 03:41:24


1

后台任务:

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

其他用途:

  • 在两个不同的线程运行相同代码的两个实例加速某些算法。

0

我们一直在为主要屏幕由适合当前登录用户的工作流组成的多个应用程序使用线程。

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

问候,
利芬


2

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


0

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


4

(不那么认真的答案)我喜欢在任何情况下使用线程,我希望系统以有趣和不明显的方式落在它的屁股上,同时仍然有可能的不可否认性,以至于我可以让问题溜走。或者,用Rasmus Lerdorf的话来说,“人们不够智能写出线程安全的代码”。


1

我知道大部分时间我使用线程,我真正想做的是启动一些异步工作 - 即我想在神话的“背景”中发生某些事情。不幸的是,思考线程并不是真正的“做一些工作”的正确抽象层次,因为你并没有在背景中加入某些东西。使用线程API,您可以创建另一个位置,以将流程作为流程原始线程的兄弟运行,并且需要担心他们之间共享的信息以及如何等等。这就是为什么我喜欢更新的API,如Cocoa的NSOperationNSOperationQueue。对于那个API来说,启动一些工作只是某一行,而库管理是应该启动一个新线程还是旧一个线程被重用。


0

这是一个非常普遍的问题。我使用“线程”来阻止UI线程的阻塞工作,无论该工作是本地还是网络I/O,还是工作都是计算密集型任务,这些任务会根据运行的硬件而“封锁” 。

我觉得更有趣的问题关于特定问题或模式,帮助缓解它和线程的适用性,即:

  • 如何线程相关 视图控制器模型?
  • 如何或为什么我应该将 从UI线程中解雇到 确保UI甚至不会认为 的阻塞?
  • 线程池如何能被 用于递归(网络) 目录遍历作为其他人 暗指?
  • 我应该affinitizing 线程的 计算密集型任务,或 我应该使用线程池和 让OS抢先调度 线程,因为它认为合适的协调调度。

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


2

线程是大多数I/O绑定应用程序以及任何合理复杂的服务器端应用程序的基础。考虑一个应用程序,它充当多个数据源的信息交换。您需要能够以独立线程处理此信息,特别是如果对此数据的操作受到延迟的影响或需要大量时间才能完成。

在大多数情况下,线程通常有助于解耦应用程序中的各种问题。单个线程向相关方派发事件在绝大多数情况下都不会很好地扩展。

除了最简单的应用程序之外的所有应用程序都需要一定程度的线程化。


0

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


0

我们的应用程序是一个Web服务,所以我们为每个请求产生一个线程。从技术上讲,JNI衍生出线程,但代码无论如何都必须是线程安全的。我们在Hibernate和基于ESB的基础架构上遇到了一些有趣的(FSVO)问题,但大部分时间保持在ThreadLocals中并且在子系统入口点上同步已经非常成功。我们还没有尝试过几十项同时发生的请求,所以可能还有一些我们尚未确定的竞争条件,但总体来说我们表现得很好,并给出了正确的答案。


0

我写的滋生时响起(从扬声器)定期提醒的东西需要注意的测试操作线程的功能。模态对话框响应后,该线程被终止。


0

不雇佣关系,但我做的Netflix Prize一些方面的工作。我的电脑有8个内核和20 GB的内存......只运行1个线程将是一件非常浪费的事情,所以我通常会启动16个线程左右。