线程
线程,可以理解为程序的一条分支,也是程序执行流的最小单元.线程是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源.
并发和并行
- 并发:指的是任务数多于cpu核数,通过操作系统的各种任务调度算法,实现多个任务’一起’执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)
- 并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的
同步和异步
- 同步:多任务,多个任务之间执行的时候要求有先后顺序,必须一个先执行完成后,另一个才能继续执行,只有一个主线.
- 异步:指的是,多个任务之间没有先后顺序,可以同时运行,执行的先后顺序不会有什么影响,存在的多条运行主线.
互斥锁
- 互斥锁:当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制
某个线程更改要改变共享数据时,先将其锁定,此时的资源的状态为锁定,其他线程不能更改;直到该线程释放资源,将资源的状态变成非锁定,其他的线程才能再次锁定该资源.互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下的数据的正确性.
死锁
- 在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁.