Multithreading 螺纹的实际用途

Multithreading 螺纹的实际用途,multithreading,Multithreading,在您的工作中,您使用线程的具体用途是什么 (请描述应用程序以及线程如何帮助/增强应用程序。)扫描目录以查找更改的文件。在每个子目录中生成一个线程,然后在单个线程中生成线程要快得多。最常见的用途是用于响应UI,就像为长时间运行的后台任务显示进度条一样。线程对于大多数UI工作至关重要。否则,任何时候你想要做一个计算或者任何需要一段时间的事情,你都会冻结UI 因此,大多数GUI框架都有处理事件循环(和一些绘图活动)的UI线程,但大多数用户代码发生在另一个线程中 线程对于偶尔检查事物或对系统状态进行间歇

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


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

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

最常见的用途是用于响应UI,就像为长时间运行的后台任务显示进度条一样。

线程对于大多数UI工作至关重要。否则,任何时候你想要做一个计算或者任何需要一段时间的事情,你都会冻结UI

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

线程对于偶尔检查事物或对系统状态进行间歇性更改也很有用。

后台任务:

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

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

我们已经在几个应用程序中使用了线程,其中主屏幕由为当前登录用户定制的工作流组成

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

问候,

Lieven

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

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

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


或者,用Rasmus Lerdorf的话说,“人们没有足够的智慧来编写线程安全的代码”。

我知道,大多数时候我使用线程,实际上我想做的是启动一些异步的工作,也就是说,我希望在神话般的“背景”中发生一些事情。不幸的是,考虑线程并不是“启动一些工作”的正确抽象级别,因为你没有把一些东西放到后台。使用线程API,您将创建另一个地方来作为进程原始线程的同级线程运行东西,并且需要担心它们之间共享了哪些信息,以及如何共享等等。这就是为什么我喜欢新的API,比如Cocoa的
NSOperation
NSOperationQueue
。在该API的情况下,启动一些工作只是一行代码,库会考虑是启动新线程还是重用旧线程。

这是一个非常普遍的问题。我已经使用“线程”来消除UI线程的潜在阻塞工作,无论该工作是本地或网络I/o,还是计算密集型任务,都会根据其运行的硬件而趋向于“阻塞”

我认为更有趣的是询问有助于缓解问题的特定问题或模式以及线程的适用性,即:

  • 线程如何与模型相关 视图控制器
  • 我该如何或为什么 将UI线程的工作转移到 确保UI甚至不会思考 阻挡
  • threadpool是如何实现的 用于递归(网络) 与其他人一样进行目录遍历 暗指
  • 我应该亲昵吗 多线程协作调度 计算密集型任务,或 我应该使用线程池和 让操作系统先发制人地安排 螺纹,因为它认为合适

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

线程对于大多数I/O绑定的应用程序以及任何相当复杂的服务器端应用程序来说都是基础。考虑一个应用程序,它是用多个数据源交换信息的应用程序。您需要能够在独立的线程中处理这些信息,特别是当对这些数据的操作存在延迟或需要大量时间才能完成时

在大多数情况下,线程通常有助于分离应用程序中的各种关注点。在绝大多数情况下,向相关方发送事件的单一线程无法很好地扩展


除了最简单的应用程序外,其他所有应用程序都在某种程度上需要线程。

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

我们的应用程序是一个web服务,因此每个请求都会产生一个线程。从技术上讲,JNI是从线程中派生出来的,但是代码必须是线程安全的。我们在Hibernate和基于ESB的基础架构中都遇到了一些有趣的(FSVO)问题,但在大多数情况下,将东西保存在ThreadLocals中并在子系统入口点上进行同步工作都非常有效。我们还没有尝试超过几十个同步请求,因此可能有一些竞争条件我们还没有确定,但总体而言,我们正在执行并给出正确的答案。

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

与就业无关,但我正在对该线程进行一些辅助工作。我的电脑有8个内核和20GB的内存。。。只运行一个线程将是一个utte