RingBuffer被组织成要给环形队列,但它与我们在常常使用的队列又不一样,这个队列大小固定,且每个元素槽都以一个整数进行编号,RingBuffer中只有一个游标维护着一个指向下一个可用位置的序号,生产者每次向RingBuffer中写入一个元素时都需要向RingBuffer申请一个可写入的序列号,如果此时RingBuffer中有可用节点,RingBuffer就向生产者返回这个可用节点的序号,如果没有,那么就等待。同样消费者消费的元素序号也必须是生产者已经写入了的元素序号。...
分类:
其他好文 时间:
2014-08-03 18:02:15
阅读次数:
399
生产者消费者问题 这个我就不解释了 应该都dong...
分类:
编程语言 时间:
2014-08-03 15:25:15
阅读次数:
421
本篇主要重点讲解了阅读nutch源码的fetch部分的感受以及通过调试追踪整个fetch的执行流程,其中包括通过生产者-消费者的模型解决爬虫问题,nutch如何爬取页面以及对于不同的返回状态做相应的处理机制,其中还涉及到一些多线程的知识。
分类:
其他好文 时间:
2014-08-02 17:55:13
阅读次数:
290
/*
生产者/消费者通用模板
特点:
高性能:采用多线程,多队列平衡的信号量等待模型,有效减少锁等待
可调节:可以根据实际应用环境调整队列数,最多可支持64个队列
使用简单,一个构造函数,一个生产函数,一个消费函数。
*/
#ifndef PANDC_H
#define PANDC_H
#include
#include
#include
#include
using namespa...
分类:
编程语言 时间:
2014-08-02 01:55:22
阅读次数:
256
生产者-消费者是很有意思的一种算法。它的存在主要是两个目的,第一就是满足生产者对资源的不断创造;第二就是满足消费者对资源的不断索取。当然,因为空间是有限的,所以资源既不能无限存储,也不能无限索取。 生产者的算法,[cpp] view plaincopyWaitForSingleObject(hEmp...
分类:
编程语言 时间:
2014-08-01 22:39:02
阅读次数:
266
转自 http://www.cnblogs.com/ccdev/p/3542669.html单I/O线程+多工作者线程的模型,这也是最常用的一种服务器并发模型。我所在的项目中的server代码中,这种模型随处可见。它还有个名字,叫“半同步/半异步“模型,同时,这种模型也是生产者/消费者(尤其是多消费...
分类:
编程语言 时间:
2014-08-01 12:45:51
阅读次数:
283
线程间的通信:其实就是多个线程再操作同一个资源,但是操作的动作不同当某个线程进入synchronized块后,共享数据的状态不一定满足该线程的需要,需要其他线程改变共享数据的状态后才能运行,而由于当时线程对共享资源时独占的,它必须解除对共享资源的锁定的状态,通知其他线程可以使用该共享资源。Java中...
分类:
编程语言 时间:
2014-07-31 16:40:16
阅读次数:
181
下面是本人前不久刚挖出来的坑,热呼呼的还冒着气。 谁能发现坑在哪? 背景: thread_main 函数:负责accept socket ,然后分发给worker thread。 thread_worker函数:负责消耗掉main thread 传递过来的线程。 关...
分类:
其他好文 时间:
2014-07-30 01:10:33
阅读次数:
246
下面是一个多线程,生产者消费者问题,一个队列放暂存的数据: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using std::cout; 8 using std::endl; 9 using std::queu...
分类:
编程语言 时间:
2014-07-30 00:44:12
阅读次数:
430
1.ArrayDeque, (数组双端队列)? 2.PriorityQueue, (优先级队列)? 3.ConcurrentLinkedQueue, (基于链表的并发队列) 4.DelayQueue,???????????????????????????????????...
分类:
其他好文 时间:
2014-07-29 16:19:49
阅读次数:
327