线程同步和线程互斥

  1. 同步:是指散部在不同任务之间的若干程序片段,他们的运行必须严格按照规定的某种先后次序来运行,这种先后次序要依赖于要完成的特定的任务,最基本的场景就是:两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。比如A任务的运行依赖于B任务产生的数据(类似于接力赛跑,第一棒把接力棒给第二棒后,第二棒才能跑)。
  2. 互斥:是指散布在不同任务之间的若干程序片段,当某个任务运行其中一个程序片段时,其他任务就不能运行他们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行。最基本的场景就是:一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。
  3. 区别和联系:同步是一种更为复杂的互斥,而互斥是一种特殊的同步,也就是说互斥时两个任务之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行的,但他是必须按照某种次序来运行相应的程序(也是一种互斥)。互斥具有唯一性和排他性,但互斥并不限制任务的运行顺序,即任务是无序的,而同步的任务之间则是顺序关系。
主动一点,世界会更大!
原文地址:https://www.cnblogs.com/sweet-li/p/13552718.html