概述
文章目录
- 进程的概念
- 线程的概念
- Thread类
进程的概念
- 进程
进程是程序在计算机上的一次执行活动。运行一个程序就相当于启动一个进程。Windows系统利用进程把工作划分为多个独立的区域,每个应用程序实例对应一个进程。进程是操作系统分配和使用系统资源的基本单位。进程包含一个正在运行时,应用程序的所有资源。每个进程所占用的资源都是相互独立。
进程资源包括:
(1)一个进程堆;
(2)一个或多个线程;
(3)一个虚拟地址空间,该空间独立于其他进程的地址空间;
(4)一个或多个代码段,包括.dll中的代码;
(5)一个或多个包含全局变量的数据段;
(6)环境字符串,包含环境变量信息;
(7)其他资源,例如打开的句柄、其他的堆等。 - 多进程
多进程就是在同一计算机系统中,同一个时刻允许两个或两个以上的进程处于运行状态。多进程有以下特点:
(1) 进程间互相独立,可靠性高。
(2) 进程之间不共享数据,没有锁问题、结构简单。
(3) 需要跨进程边界,多进程调度开销较大。
在Windows操作系统中,通过访问Windows任务管理器可以查看当前正在运行的进程。单击详细信息,可看到进程的PID、CPU使用率、内存使用率等信息,应用程序可以包含一个或多个进程,每个进程都有自己独立的数据、执行代码和系统资源,如下图所示。
线程的概念
- 线程
线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈、指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
注意:一个进程可以有多个线程、一个线程必须有一个父进程,一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。 - 多线程
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。
(1)多线程具有以下优点。
可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其他的线程而不是等待,这样就大大提高了程序的效率。
(2)多线程具有以下缺点。
① 线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;
② 多线程需要协调和管理,所以需要CPU时间跟踪线程;
③ 线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;
④ 线程太多会导致控制太复杂,最终可能造成很多Bug。
(3) 线程的声明周期
线程的生命周期线程生命周期开始于System.Threading.Thread类的对象被创建时,结束于线程被终止或完成执行时。下面列出了线程生命周期中的各种状态。
(1)未启动状态:当线程实例被创建,但Start方法未被调用时的状况。
(2)就绪状态:当线程准备好运行并等待CPU周期时的状况。
(3)不可运行状态:已经调用Sleep方法、Wait方法或者通过I/O操作阻塞时,线程是不可运行的。
(4)死亡状态:当线程已完成执行或已中止时的状况。
在C#中,Thread类用于线程的工作。它允许创建并访问多线程应用程序中的单个线程。进程中第一个被执行的线程称为主线程。
编写程序,创建一个线程、打印101-201到控制台上。
using System;
using System.Threading;
namespace Project1
{
class Program
{
//创建线程的方法,进101到201输出到屏幕
public static void Method()
{
for (int i = 101; i < 201; i++)
{
if (i % 10 == 0)
{
Console.WriteLine(i.ToString()); //换行打印
}
else
{
Console.Write(i.ToString()+" "); //不换行打印
}
}
}
static void Main(string[] args)
{
//创建委托实例
ThreadStart ts = new ThreadStart(Method);
//通过委托实例来构造Thread类
Thread t = new Thread(ts);
t.Start();
Console.ReadKey();
}
}
}
程序结果:
101 102 103 104 105 106 107 108 109 110
111 112 113 114 115 116 117 118 119 120
121 122 123 124 125 126 127 128 129 130
131 132 133 134 135 136 137 138 139 140
141 142 143 144 145 146 147 148 149 150
151 152 153 154 155 156 157 158 159 160
161 162 163 164 165 166 167 168 169 170
171 172 173 174 175 176 177 178 179 180
181 182 183 184 185 186 187 188 189 190
191 192 193 194 195 196 197 198 199 200
Thread类
在.Net Framework中,所有与多线程机制应用相关的类都是放在System.Threading命名空间中的。如果用户想在应用程序中使用多线程,就必须包含这个类。
下表列出了Thread类的一些常用的属性。
下表列出了Thread类的一些常用方法。
最后
以上就是迷路黑米为你收集整理的C#--进程与线程的全部内容,希望文章能够帮你解决C#--进程与线程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复