进程与线程
一、进程
狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
特征
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
调用进程
private void button1_Click(object sender, EventArgs e) { Process.Start("calc");//打开系统计算器 }
二、线程
1.线程基本结构
2.线程基本操作
(1)引用Tread类
(2)实例化
(3)th.Start();
线程启用(默认开启前台线程):
Thread th = new Thread(需要执行的方法名称); th.Start();//可以开始执行
后台线程:
Thread th = null; private void button1_Click(object sender, EventArgs e) { th = new Thread(xunhuan); th.IsBackground = true; th.Start(); }
传参:
Thread th = null; private void button1_Click(object sender, EventArgs e) { if (th != null) { th.Abort(); } string[] nums = new string[] { "13864311111", "13864322222", "13864333333", "13864344444", "13864355555", "13864366666", }; th = new Thread(suiji); th.IsBackground = true; th.Start(nums); } public void suiji(object n) { string[] nums = n as string[]; while (true) { Random r = new Random(); int ind = r.Next(nums.Length); label2.Text = nums[ind]; } }
注意:线程只能执行有一个参数,并且没有返回值的函数,而且这个参数必须是object类型