最近用C++写安卓下的一个通讯程序,作为jni库给java调用,采用多线程轮询遇到一个问题描述如下:
A线程收到数据,放入队列,是生产者。
B、C、D若干个线轮询训消息队列,如果队列有数据就取出进行处理,没数据就Sleep(T)休息,问题是这个T值取多大合适?取大了消息处理不及时,取小了手机cpu上升电池很快耗光。
这个问题最佳解法是采用条件变量,可以比较完美解决问题...
分类:
编程语言 时间:
2014-09-29 22:17:21
阅读次数:
233
关于两个栈实现一个队列和两个队列实现一个栈问题,网上有很多资料。这里只描述自己认为操作最少的方法。
两个栈实现一个队列
思想:假设两个栈分别为s1,s2。对s1进行入队,出队时,先判断s2是否为空,如果是则将s1中元素压入s2并弹出最上面元素,如果不是,则直接弹出s2最上面的元素。
EnQueue(s1,s2,k){
push(s1,k);
}
//出队
DeQueue(s1,s2)...
分类:
其他好文 时间:
2014-09-29 20:43:42
阅读次数:
213
做了些实验,感觉用链表实现队列比用数组实现队列性能好进出队的每秒操作数比较数组队列enqueue37,037dequeue4,166,666链表队列enqueue277,778dequeue666,667先入队n次,再出队n次的运行时间比较,单位是秒出入队次数|数组队列运行时间|链表队列运行时间1,...
分类:
其他好文 时间:
2014-09-26 14:18:48
阅读次数:
292
在上文《.Net中的并行编程-2.ConcurrentQueue的实现与分析》 中解释了无锁的相关概念,无独有偶BCL提供的ConcurrentQueue也是基于原子操作实现, 由于ConcurrentQueue的代码较多所以本文主要分析几个常用操作:入队(EnQueue) 、出队(TryDequ....
分类:
Web程序 时间:
2014-09-26 01:15:57
阅读次数:
245
输入函数scanf ,sscanf(输入源是字符串),fscanf(输入源是文件)函数返回值 :返回成功读入的项目的个数。如果没有读取任何项目返回0。当它检测到文件结尾时,它返回EOF。输入结束标志:跳过输入队列的换行符,空格开始读入。遇到换行,空格是结束读入,注意 :输入字符串时逗...
分类:
其他好文 时间:
2014-09-25 19:08:37
阅读次数:
299
C++中的队列,模板队列,实现了入队,出队,查询大小等功能。用模板实现的。...
分类:
编程语言 时间:
2014-09-25 17:36:59
阅读次数:
218
栈的基本操作包括入栈push和出栈pop,栈有一个栈顶指针top,指向最新如栈的元素,入栈和出栈操作操作都是从栈顶端进行的。
队列的基本操作包括入队enqueue和出队dequeue,队列有队头head和队尾tail指针。元素总是从队头出,从队尾入。采用数组实现队列时候,为了合理利用空间,可以采用循环实现队列空间的有效利用。
关于栈和队列的基本操作如下图所示:
采用数组简单实现一下栈...
分类:
其他好文 时间:
2014-09-22 01:16:21
阅读次数:
499
和栈相反,队列是一种先进先出的的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这和我们日常生活中的队列是一致的,最早进入队列的元素最早离开。在队列中,允许插入的一端叫做队尾,允许删除的一端则稀烂为队头。
顺序队列,即队列的顺序存储结构。由于队列的队头和队尾的位置均发生变化,因此在队列顺序存储结构中,除了用一组地址连续的存储单元依次存放从队头到队尾的元素之外,还需要附设...
分类:
其他好文 时间:
2014-09-21 16:34:50
阅读次数:
297
昨天研究了链队列的入队操作,那么现在再来看看链队列的出队操作吧。出队操作时,就是头结点的后继结点出队,将头结点的后继改为它后面的结点,若链表除头结点外只剩一个元素时,则需将rear指向头结点。还是画个图理解一下吧。一般情况下,链队列的出队图示:老品牌娱乐城如果链队列只剩下一个元素的时候,出队则如下图...
分类:
其他好文 时间:
2014-09-19 15:33:35
阅读次数:
376
对于循环队列与链队列的比较,可以从两方面来考虑:纽约娱乐城从时间上,其实它们的基本操作都是常数时间,即都为0(1)的,不过循环队列是事先申请好空间,使用期间不释放,而对于链队列,每次申请和释放结点也会存在一些时间开销,如果入队出队频繁,则两者还是有细微差异。对于空间上来说,循环队列必须有一个固定的长...
分类:
其他好文 时间:
2014-09-19 15:28:45
阅读次数:
525