多个线程之间需要通信才能正常的工作,这种通信我们称之为线程的交互。
交互的方式:互斥、同步
类比中班级(进程)和学生(线程)的概念,线程之间要通过某些协作才能完成某些任务
类比解释:
互斥:有时这种协作是需要竞争的,因为公共资源是有限的。好比班级中的公共学习资料是有限的,一个同学抢到了,等到他使用 完了,下一个同学才可以使用。一个同学正在使用,其他的同学就不可以使用;相应的,一个线程正在使用的资源,其他线程不可以使用。
同步:类比六一儿童节,需要班级出节目。一个班级中,所有同学需要配合才能完成一场演出。相应的,多个线程之间需要配合才能,完成某些任务。
其他解释:
互斥:通常表现在多个线程竞争同一资源,比如这里只有一只笔,同时有几个人要进行签到,但资源(笔)唯一,线程(人)之间就存在竞争关系,并且同一时间只有一个线程(人)能够持有这个资源(笔)。
同步:同步就是协同步调,按预定的先后次序进行运行,如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行。B依言执行,再将结果给A。A再继续操作。