在程序中使用线程有什么优势

本文关键字:什么 线程 程序 | 更新日期: 2023-09-27 18:37:19

我是线程概念的新手。我对线程几乎没有困惑。

正常调用方法和使用线程调用方法有什么区别。 thread.join有什么用?

例:在代码隐藏文件中:通常调用方法

Getdata();

通过使用线程调用此方法:

Thread th=new Thread(new ThreadStart(Getdata));
th.Start();

哪一个产生高性能

在程序中使用线程有什么优势

拥有多个线程的主要原因是加快计算速度。每个线程将针对输入数据的一部分执行复杂计算的一部分。如果线程数与处理器内核数一样多,则每个线程将自由运行,并且每秒的计算次数将增加。将线程数增加到此点以上(内核数)不会带来太大好处。必须注意处理器体系结构的其他部分(内存、处理器缓存、一些其他共享资源),以免它成为瓶颈并强制所有线程在大部分时间等待它。

拥有线程的第二个原因是将所有冗长的操作从主线程(通常是 GUI 线程)中删除。然后应用程序更加用户友好,用户不会遇到窗口"冻结"。

拥有线程的第三个原因是使代码同时更快和更简单。假设您对数据和共享资源(Web 服务、数据库、一些专用硬件、打印机)进行了复杂的操作,并且可以将复杂的操作分为几个更简单的操作,并且根据数据省略部分操作。你可以有一个线程的"管道",其中每个线程对数据做一个简单的事情,对某些资源具有独占访问权限,并将结果发送到管道中的其他线程。整个过程的运行速度会比只有一个线程从头到尾运行每个位数据时更快,但代码也不会太复杂。

通过使用线程,您可以让运行缓慢的进程"除了"其余代码之外运行。

使用 Join 时,您将等待该代码完成。

例如,假设您正在通过网络从 3 个不同的慢速服务器获取数据。然后,最好启动树线程以获取此数据,然后在进行计算之前加入它们。这样,您就可以在最慢的服务器响应时开始计算,而不是所有三个服务器的总时间。

关于性能,您可能拥有一台多核机器。通过穿线,您可以利用更多内核,因此您也可以获得更好的性能。

让我们将其归结为一个简单的案例。您的计算机中有一个双核处理器。假设每个内核一次只能处理一个线程(实际上,它们可以非常快速地在多个线程之间切换)。

为了一次运行两段代码,您需要 2 个线程。如果只是将代码从第二个线程附加到第一个线程的末尾,则第二个线程必须等待第一个线程的代码完成。线程 1 被称为阻塞。线程 2 据说正在等待

线程具有很好的应用。考虑游戏,其中场景的渲染是循环执行的。每帧之间的任何繁重处理都会导致帧速率变慢。你想避免这种情况。你是做什么工作的?您在另一个线程上进行繁重的处理,并相信操作系统将充分利用可用的 CPU 内核。

线程的目的是满足同时运行单独代码的需求。通常,如果您有源代码,则源代码中的所有行都将按顺序执行。让我们考虑一下您向 20 个收件人发送电子邮件的情况。如果您一个接一个地发送所有邮件,则总等待时间是发送电子邮件的总时间。如果您创建 20 个线程,每个电子邮件发送一个线程,那么您的等待时间将大致是您最慢邮件的时间,这大约是 20 倍的加速。另外,让我们考虑您正在与计算机下棋。引擎必须不断考虑最佳变化,但与此同时,它的时间正在减少,它必须以图形方式显示,有时应该显示声音效果等等。