实现多线程
多线程帮助同时执行各种操作。这为用户节省时间。多线程程序包括一个主线程和其他用户定义的线程以同时执行多个任务。
微处理器为执行的进程分配内存。每个进程占有内存中它们自己的地址空间。但是,所有在进程中的线程占有相同的地址空间。多线程允许在一个程序中完成多个任务。多任务是同时执行多个任务的能力。例如,一位女士同时在吃苹果、读书和在计算机上操作。这显示了他同时执行了多个任务的能力。
多任务可以被分为以下类别:
- 基于进程的多任务:这个多任务特性能够从一个程序快速切换到另一个程序,就好像程序同时被执行。例如,基于进程的多任务能够运行C#编译器并且同时使用文本编辑器。
- 基于线程的多任务:例如,文本编辑器可以使用执行写和打印动作的独立线程同时执行写入文件和打印文档。当处理器从一个线程切换到另一个线程的时候,损耗的负荷较少。因此,线程被称为轻量级的进程。但是,当处理器从一个进程切换到另一个进程的时候,处理器上的负载会增加。
多线程的优点和局限性
多线程在设计程序时的用处非常广泛,因为它使用较少的系统资源来加强系统性能。此外,多线程可通过共享系统资源同时执行各种任务。但是,多线程可能会导致程序中出现没有必要的条件。
多线程的优点
多线程的优点有:
- 改进性能:多线程通过同时执行计算和I/O操作提高处理器的性能。
- 最小化系统资源利用:通过使用共享相同的地址空间和属于同一个进程的线程,最小化系统资源的使用。
- 同时访问多个应用程序:同时访问了多个应用程序,因为CPU可以从一个线程切换到另一个线程。
- 程序结构简化:简化复杂应用应用程序的结构,例如多媒体应用程序。每个活动可以在独立的方法中编写,它使复杂的程序易于设计和编写。
多线程的局限性
多线程的局限性有:
5. 竞态情况:当两个或更多线程同时访问一个变量的时候,至少一个线程试图在变量中写值。这被称为竞态情况,它是由两个线程间缺乏同步造成的。例如,在文字处理器程序中,有两个线程,一个从文件中读取而另一个写入到文件。在执行它的操作之前,读文件的线程等待写入的线程。竞态情况在线程试图读取文件时、其他线程写入文件前发生。
注释
线程的同步确保如果两个或多个线程需要访问共享资源,那么那个资源一次仅被一个线程使用。
- 死锁情况:这个情况发生在计算机系统中,当两个线程互相等待完成它们的运算后再执行他们各自的操作时发生。结果,两个线程变成死锁,程序崩溃。例如,两个学生必须仅用一个绘图刷和一个颜色绘制一幅花朵图。如果一个学生使用绘图刷,另一个使用颜色,他们都需要等待对方完成画图才能结束任务。这就会导致死锁。
- 锁饥饿:这个限制发生在线程由于优先级低,其执行被延迟的时候。.NET运行时环境基于它们的优先级执行线程,因为处理器同时仅能执行一个线程。有较高优先级的线程在较低优先级的线程之前执行。
小问题:
当线程因其优先级低而延迟执行时,出现以下哪种情况&