一、进程和线程
1.什么是进程?
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,简单理解就是我们每打开一个应用程序就是在操作系统上开启了一个进程。
2.什么是线程
操作系统能够进行运算调度的最小单位,包含在进程中,是进程中的实际运作单位,一个线程指的是进程中的单一顺序的控制流,一个进程可以并发多个线程,我们目前写的程序都在主线程中,简单理解就是代码从到下运行的一条“管道”
3.什么是多线程
我们可以通过代码开启新的线程,可以同时运行多条“管道”,运行多个线程
4.创建一个新的线程
开辟一个新的线程用的是线程了Thread,需要引用using System.Threading命名空间,开辟的线程的代码逻辑是放到传进来的函数中的,所以申明一个线程需要传入一个函数。
Thread T = new Thread(ThreadLogic);//入口函数
public static void ThreadLogic()
{
//放需要执行的代码
}
5.启动线程
默认启动的线程是前台线程,也就是会影响主线程结束的时机,默认是要等前台线程结束后,主线程才会结束,比如我们在新开线程中写一个死循环,这时候主线程中的代码运行结束了,本来应该要结束的,但是由于我们默认申明的是前台线程,所以必须等新开线程结束后主线程才会结束。
6.将线程设置为后台线程
设置为后台线程后,主线程代码如果运行结束会强制终止还在运行的后台线程
7.终止线程
我们可以在线程的代码中加一个循环,循环的判断条件是是我主线程中提供的一个布尔变量,当我们想要关闭线程的时候直接将该变量设置为false就可以了,这时候新线程中的代码就会跳出循环停止运行
8.线程休眠
让线程休眠多少毫秒,1s=1000毫秒,Thread.Sleep(填毫秒值),在哪个线程中执行就会休眠对应的线程,不会干扰到其他线程
9.线程之间共享数据
多个线程使用的内存是共享的,都属于该进程,所以当多个线程同时操作一片内存区域时可能会出现问题,
使用加锁lock的形式,将线程中的代码锁住,比如程序如果是在运行主线程中的代码,这时候会将lock中的代码进行加锁,也就是在其他加锁的地方必须等这边的代码执行完才会去执行另外一个线程中加锁的代码