经典模型
文章平均质量分 77
bulingma
这个作者很懒,什么都没留下…
展开
-
生产者消费者模型一(单-单模型)
生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题本文介绍单生产者——单消费者的代码实现设计要点: 当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。 同样的,当缓冲区满已空,而此时消费者还想从缓冲区中取出一个新的数据项时。则让消原创 2018-01-24 23:03:42 · 567 阅读 · 0 评论 -
生产者消费者模型二(单-多模型)
生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题单生产者——多消费者设计要点: 当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。 同样的,当缓冲区满已空,而此时消费者还想从缓冲区中取出一个新的数据项时。则让消费者睡眠,待生产者原创 2018-01-24 23:23:30 · 331 阅读 · 0 评论 -
生产者消费者模型三(多-单模型)
生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题多生产者——单消费者设计要点: 当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。 同时,多个生产者,则需要多添加一个条件变量和计数变量,用来保证多个生产者之间对消息队列的互斥访问原创 2018-01-24 23:24:45 · 780 阅读 · 0 评论 -
生产者消费者模型四(多-多模型)
生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题多生产者——多消费者设计要点: 当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。 同时,多个生产者,则需要多添加一个条件变量和计数变量,用来保证多个生产者之间对消息队列的互斥访问原创 2018-01-24 23:25:18 · 457 阅读 · 0 评论 -
生产者消费者模型(多-多模型/面向对象思想实现)
本篇文章将用c++的面向对象思想,实现生产者消费者模型的代码编写。个人感悟:1、多生产者多消费者模型的共享竞争关系:对缓冲区的共享和竞争:生产者和消费者都需要对共享缓冲区进行操作,存入产品或消费产品。mtx二值信号量和条件信号量的搭配使用,可以使得生产者或消费者在第一时间获取到共享缓冲区的非满、非空的情况。同时如果缓冲区满或空时则停止对应的生产者或消费者的操作,防止死锁原创 2018-01-25 22:38:27 · 531 阅读 · 0 评论 -
I/O多路复用:select、poll、epoll
I/O多路复用I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。通常,网络程序在下列情况下需要使用I/O复用技术:(1)客户端程序要同时处理多个socket。比如非阻塞connect技术。(2)客户端程序要同时处理用户输入和网络连接。比如一个聊天室程序。(3)TCP服务器要同时处理监听socket和连接socket。这是I/O复用使用最多的场合。(4)服务器要同时处...原创 2019-06-01 09:16:34 · 144 阅读 · 0 评论 -
两种高效的事件处理模型—Reactor和Proactor
随着网络设计模式的兴起,Reactor和Proactor事件处理模式应运而生。同步I/O模型通常用于实现Reactor模式,异步I/O模型则用于实现Proactor模式。一、Reactor(反应堆/器)Reactor 是这样一种模式,它要求主线程(I/O处理单元,下同)只负责监听文件描述上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑单元,下同)。除此之外,主线程不做任何其他实质性的工...原创 2019-06-01 14:58:06 · 963 阅读 · 0 评论