并发
线程和进程都是一个调度的单位
并发进程之间的关系
交互关系之间的关系是很复杂的,假如一个进程需要等待另外一个进程的调用才可以运行,就如下面这个例子
竞争关系
上面这个区叫做临界区域
协作方式
前面我们说过异步和同步的概念
那么异步进程我们前面说了,特点就是随机,那么随机的进程就会产生
我们看一个例子
如果这两个进程不是并发执行,那么最后结果一定是0
但是这里如果是并发
我们可以看到造成这样的原因是因为T是局部变量,每个进程的stack都是独立的,所以才会得到两个程序将全局变量x都赋值了1,即便是线程并发,栈空间也是独立的,所以也可能会出现这样的问题
但我们再换一个执行方式
如果并发线程或进程T1先执行,T2在执行,那么就不会出现问题
但是不论如何,只要是两个进程或线程并发执行,如果里面有需要交换数据,那么就会有这样问题。
所以我们需要有另外一个方式
同步
同步机制
同步的工具
互斥锁就是纯用来解决竞争问题