(五)多线程编程

一、多线程简介
1、操作系统下的并行执行机制
(1)并行就是说多个任务同时被执行。并行分微观上的并行和宏观上的并行。
(2)宏观上的并行就是从长时间段(相对于人来说)来看,多个任务是同时进行的;微观上的并行就是真的在并行执行。
(3)操作系统要求实现宏观上的并行。宏观上的并行有2种情况:第一种是微观上的串行,第二种是微观上的并行。
(4)理论来说,单核CPU本身只有一个核心,同时只能执行一条指令,这种CPU只能实现宏观上的并行,微观上一定是串行的。微观上的并行要求多核心CPU。多核CPU中的多个核心可以同时微观上执行多个指令,因此可以达到微观上的并行,从而提升宏观上的并行度。

二、进程和线程的区别和联系
(1)进程和线程是操作系统的两种不同软件技术,目的是实现宏观上的并行(通俗一点就是让多个程序同时在一个机器上运行,达到宏观上看起来并行执行的效果)。
(2)进程和线程在实现并行效果的原理上不同。而且这个差异和操作系统有关。譬如windows中进程和线程差异比较大,在linux中进程和线程差异不大(linux中线程就是轻量级的进程)。
(3)不管是多进程还是多线程,最终目标都是实现并行执行。

三、多线程的优势
(1)前些年多进程多一些,近些年多线程开始用得多。
(2)现代操作系统设计时考虑到了多核心CPU的优化问题,保证了:多线程程序在运行的时候,操作系统会优先将多个线程放在多个核心中分别单独运行。所以说多核心CPU给多线程程序提供了完美的运行环境。所以在多核心CPU上使用多线程程序有极大的好处。

多核CPU跑多线程程序,要注意多线程同步,在线程之间通信的时候用到一些共享变量,这些共享变量需要同步,多个线程不能同时访问同一个共享变量,访问之前要申请,获取访问权限,再没被占用的情况下可以获取到访问权限,然后再进行操作,这就是多线程同步和锁的问题。

原文地址:https://www.cnblogs.com/zhangshenghui/p/5903445.html