本文将讲解并发的来源以及为需要并发,希望能带给你一些更加深层次的并发理解。
编写并发程序的原因
1、挺高利用资源利用率:程序必须等待某个操作完成,这时候可以执行另外一个操作,这也是编写并发程序的最大目的,比如现在计算机是多核处理器,为了利用这些处理器,可以编写多线程程序。
2、公平性:操作系统为了公平性,每个程序都公平享有计算机资源,高效的方式是时间片轮转,每个程序轮流执行。
线程的出现
串行编程符合人类的做事方式,但是也有其缺点,因为有些事情是可以异步执行的,比如我们在洗衣的同时,可以煮水,而不是洗衣完成之后再煮水。这时候线程出现了:
线程允许同一个进程分为多个控制流,线程共享进程内的资源,比如文件句柄和内存句柄,而线程有自己程序计数器、栈和局部变量,而且可以调度到多个CPU上并行执行,大大提高资源利用率。
优势:多线程程序的出现导致请求不必同步等待(阻塞),而是可以分配到多个线程去处理,大大提高了并发处理数量。
劣势:多线程编程也使编程的复杂度升高,线程的非同步交叉执行会产生意想不到的后果,这就是线程的安全性;
此外,线程的活跃度也要控制好,比如相互请求对方握有的资源会造成死锁,还有考虑多线程执行是否性能更加的好。