一、什么是进程
1、进程是一个动态执行的程序,当一个程序运行的时候,就会创建进程。
2、每个进程对应一定的内存地址空间,并且只能使用它自己的内存空间,各个进程间互不干扰。
3、进程是系统进行资源分配的基本单位。
二、线程的由来?
1、进程的出现解决了操作系统的并发问题。但是一个进程在一个时间段内只能做一个事情,如果一个进程有多个子任务时,只能逐个的执行这些任务,很影响效率,因此引进了线程。
2、进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能
三、什么是线程?
1、线程是比进程更小的单位。
2、线程指的是进程中单一顺序的执行流,线程可以共享内存单元和系统资源,但不能单独执行,必须存在于某个进程中。
四、线程和进程的关系?
1、一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
2、当资源分配给进程时,同一进程的所有线程共享该进程的所有资源。
3、线程是指进程内的一个执行单元,也是进程内的可调度实体。
五、线程和进程的区别?
1、调度:线程作为调度和分配的基本单位,进程是资源分配的基本单位。
2、拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
3、是否单独占有内存地址空间:进程单独占有一定的内存地址空间,线程之间没有单独的地址空间。进程比线程可靠性高。
六、线程分类
1、单线程:进程只有一个线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。
2、多线程:进程有多个线程程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。
七、线程同步
1、我们运行的每个程序中可能包含多个独立运行的线程。当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时需要引入线程“同步”机制,即各个线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。
2、同步:synchronize(使同时发生)。
八、互斥锁
一、多个线程同时访问某个资源的时候,可能会造成资源不够用,这时需要互斥锁。
二、互斥锁操作流程:
1、在访问共享资源后临界区域前,对互斥锁进行加锁。
2、在访问完成后释放互斥锁导上的锁。
3、对互斥锁进行加锁后,任何其他试图再次对互斥锁加锁的线程将会被阻塞,直到锁被释放。
九、信号量
1、信号量,有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。
十、互斥锁和信号量的区别
1、互斥锁是信号量的一种特殊情况(N=1)u互斥锁用于线程的互斥,信号量用于线程的同步。
2、互斥:指某一个资源同时只允许一个访问者对其进行访问,具有唯一性和排他性。但互斥无法限制访问者对资源的访问顺序,即访问是无序。
3、同步:指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
4、互斥锁加锁和解锁必须由同一线程分别对应使用。信号量可以由一个线程释放,另一个线程得到。