gpt4 book ai didi

multithreading - 什么样的应用程序需要多线程?

转载 作者:行者123 更新时间:2023-12-03 11:05:13 24 4
gpt4 key购买 nike

什么是一些具体的例子需要多线程或不需要多线程但这样更好的应用程序?

如果以每个帖子一个应用程序的形式给出答案,那么最适用的将浮到顶部。

最佳答案

没有硬性和快速的答案,但大多数情况下,对于工作流程/计算是顺序的系统,您不会看到任何优势。然而,如果可以将问题分解为可以并行运行的任务(或者问题本身是大规模并行的 [如某些数学或分析问题]),您就会看到很大的改进。

如果您的目标硬件是单处理器/内核,则您不太可能看到多线程解决方案的任何改进(因为无论如何一次只能运行一个线程!)

编写多线程代码通常更难,因为您可能需要投入时间来创建线程管理逻辑。

一些例子

  • 图像处理通常可以并行完成(例如,将图像分成 4 个并在 1/4 的时间内完成工作),但这取决于正在运行的算法以查看这是否有意义。
  • 动画渲染 (来自 3DMax 等)是大规模并行的,因为每一帧都可以独立呈现给其他帧——这意味着可以将 10 或 100 台计算机链接在一起以提供帮助。
  • 界面 在做一些缓慢的事情时,编程通常有助于至少有两个线程,例如处理大量文件 - 这允许界面在工作人员进行艰苦工作时保持响应(在 C# 中,BackgroundWorker 就是一个例子)

  • GUI 是一个有趣的领域,因为如果工作算法通过给它时间来保持主 GUI“活着”,则可以在没有多线程的情况下保持界面的“响应性”,在 Windows API 术语中(在 .NET 之前等)这可能是通过原始循环实现,不需要线程:
    MSG msg;
    while(GetMessage(&msg, hwnd, 0, 0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);

    // do some stuff here and then release, the loop will come back
    // almost immediately (unless the user has quit)
    }

    关于multithreading - 什么样的应用程序需要多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/455084/

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