同步与互斥
互斥是更严格的一种同步
进程同步:这是进程间的一种运行关系。“同”是协同,按照一定的顺序协同进行(有序进行),而不是同时。即一组进程为了协调其推进速度,在某些地方需要相互等待或者唤醒,这种进程间的相互制约就被称作是进程同步。这种合作现象在操作系统和并发式编程中属于经常性事件。具有同步关系的一组并发进程称为合作进程。
举个例子,在主线程中,开启另一个线程。另一个线程去读取文件,主线程等待该线程读取完毕(等待该线程执行完毕),那么主线程与该线程就有了同步关系。
再举一个例子,在主线程中,开启另一个线程。主线程与另一个线程尝试进入临界区(已经有了同步保障,比如java中被synchronization修饰的同步块),那么主线程与另线程就会按某种顺序进入临界区,此时两个线程是互斥的(同步的)。
进程异步:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。两个进程同时运行,与并行操作不同,它的两个进程之间是有关系的。即调用者不会一直按照这个顺序傻傻等待着被调方处理完,而是在这段期间做自己的事,直到被调方给他通知再去处理。异步需要内核底层的一些机制,来通知另一个进程去访问临界资源。
举个例子,在主线程中,开启另一个线程。另一个线程去读取文件,主线程并不会等待另一个线程读取完毕,而是继续向后运行。另一个线程读取完毕后,通知主线程。主线程收到通知去处理。