互斥和同步

互斥:是指散布在不同进程之间的若干程序片段,当某个进程执行其中的一个程序片段时,其他进程就不能运行它们之中的任一程序片段,只能等到该进程运行完之后才可以继续运行。

同步:是指散布在不同进程之间的若干程序片段,它们的运行必须严格按照一定的先后次序来运行,这种次序依赖于要完成的任务。比如数据的收发,必须发送方发送了接收方才能收。

        同步是一种更为复杂的互斥吗,而互斥是一种特殊的同步。互斥是两个进程或线程之间不可以同时运行,它们会互相排斥,必须等待其中的一个运行完,另一个才可以运行。而同步也是不可以同时运行,并且还需要按照某种顺序来运行。

总结:

  1. 互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法控制对资源的访问顺序
  2. 同步是指在互斥的基础上实现对资源的有序访问

实现互斥的方法

  1. 加锁
  2. 信号量(P、V操作)
  3. 硬件支持:
    1. 中断禁用:单处理机中,在进程执行临界区代码时不可以被中断。
    2. 专用机器指令:保证动作的原子性

实现同步的方法

  1. 信号量(P、V操作)
  2. 消息传递:send()、recv()
  3. 条件变量

猜你喜欢

转载自blog.csdn.net/qq_41727218/article/details/88376773