之前感觉很简单,但是有一次面试让我在纸上写,居然没写对丢人啊。 生产者消费者问题(Producer-consumer problem):生产者不断地生产产品,消费者取走生产者生产的产品。生产者生产出产品后将其放到一个区域之中,消费者从这个地方去除数据。 涉及的问题:要保证生产者不会在缓冲区满时加入数 ...
分类:
编程语言 时间:
2016-07-21 12:36:02
阅读次数:
198
ConditionVariable都会搭配一个Mutex来用.我们知道Mutex的普通意义上是维持一个互斥变量,从而保证一个或一组操作的原子性.同样,简单的说Mutex加在ConditionVariable上也是为了保证它的原子性了.ConditionVariable,有条件的唤醒机制.最经典不过的就是生产--消息者模型了.但有一..
分类:
其他好文 时间:
2016-07-20 19:49:31
阅读次数:
260
1、生产者消费者问题三种关系:生产者--生产者(互斥);消费者-消费者(互斥);生产者--消费者(互斥同步)两个角色:生产者;消费者一种生产场所:缓冲区2、环形队列(缓冲区)数据结构:可以有多种,这里选用数组,逻辑上将a[0]和a[size-1]相连构成环形队列判断空/判断满:..
分类:
其他好文 时间:
2016-07-20 19:49:13
阅读次数:
309
1、读者写者写者:写数据读者:仅仅是读数据,不存在取走数据写者与写者关系:互斥读者与读者关系:没有关系写者与读者关系:同步、互斥解决方法:1)读者优先:读者正在读,写者不能终止读者,直到读者读完,写者才能写入2)写者优先:写者正在写,读者不能终止写者,直到写者..
分类:
其他好文 时间:
2016-07-20 13:47:32
阅读次数:
352
1、消费者与生产者生产者与生产者:互斥关系消费者与消费者:互斥关系生产者与消费者:互斥、同步关系2、如何实现多消费者与多生产者代码实现:测试代码:两个消费者,两个生产者运行结果:
分类:
其他好文 时间:
2016-07-20 13:45:18
阅读次数:
238
互斥锁mutex变量的值非0即1,只能用来表示两种状态下的临界资源。而信号量是与之类似的,用来表示可用资源的,区别在于,信号量可以表示多个可用资源的。 --值为2的信号量也就是特殊的互斥锁了。 那么下边就简单实现信号量表示多个资源访问的生产者消费者问题了。 关于互斥锁,同步等问题,参加上篇博客 《l ...
分类:
编程语言 时间:
2016-07-20 06:29:13
阅读次数:
186
一个关于协同程序的经典示例是“生产者-消费者”问题。这其中涉及到两个函数,一个函数不断地产生值(比如从一个文件中读取值),另一个则不断地消费这些值(比如将这些值写到另一个文件)。通常,这两个函数大致是这样的: 这里有一个问题是如何将send与receive匹配起来。这是一个典型的“谁具有主循环(wh ...
分类:
其他好文 时间:
2016-07-19 20:25:38
阅读次数:
411
生产者会生产出很多消息 , 但是不同的消费者可能会有不同的需求,只需要接收指定的消息,其他的消息需要被过滤掉。 这时候就可以对消息进行过滤了。 在消费者端设置好需要接收的消息类型。 如果不使用默认的Exchange发送消息,而是使用我们自定定义的Exchange发送消息,那么下面这个方法的第二个参数 ...
分类:
其他好文 时间:
2016-07-19 15:34:54
阅读次数:
176
前面都是一条消息只会被一个消费者处理。 如果要每个消费者都处理同一个消息,rabbitMq也提供了相应的方法。 在以前的程序中,不管是生产者端还是消费者端都必须知道一个指定的QueueName才能发送、获取消息。 而rabbitMQ消息模型的核心思想是生产者不会将消息直接发送给队列。 因为,生产者通 ...
分类:
其他好文 时间:
2016-07-19 15:23:46
阅读次数:
220