★生产者-消费者模型ide
首先,咱们先分析一下生产者与消费者模型:生产者与消费者是模型中不可缺乏的2种角色,固然模型中确定须要一个保存数据的场所,可以将生产者生产的数据进行存储。同时,模型必需要知足生产者产生出数据后,消费者才可以进行使用,即就是消费者必须位于生产者以后,固然生产者生产的数据最多将场所放置满就不能继续生产,下面有简单的图示:spa
固然,若是有多个消费者和多个生产者,生产者与消费者之间的关系是同步的,生产者与生产者之间是互斥的,由于一块空间不能让多个生产者同时进行生产。消费者和消费者之间也是互斥的,也就保证了不能同时进行一块空间中数据的消费。3d
生产者是否可以生产取决于还有多少空间,而消费者是否可以消费取决于有多少个数据,生产者开始时有空间,而没有产生数据,因此生产者确定居于消费者以前。blog
例:下面是具体的实现生产者-消费者模型,其中使用链表来存储生产的数据,生产的数据头插入链表,消费者的消费数据进行头删。ci
运行结果:资源
★读、写者模型get
读、写者模型与生产者消费者模型相似,可是也要不一样的地方,多个读者能够共享一块空间中的数据,写者之间是相互斥的,读者和写者之间是互斥的。同步
读写锁:也称自旋锁,一个读写锁容许有多个读者进行资源的读取,可是只可以容许一个写者对数据进行操做。it
例:io
运行结果: