一种可并发读写的队列实现

来源:互联网 发布:从数据库读取图片软件 编辑:程序博客网 时间:2024/04/29 05:44

  http://developer.symbian.org/wiki/index.php/Category:Platform_Opening

 symbian开源代码下载

 

写算法时头脑要清晰,在头脑中高速抽象分析,一般都会用循环或递归思想来完成。

1 定义规则;

2 确定边界条件;

3 每一步的具体操作和细节注意;

例如:C实现循环队列

分析如下:

肯定有循环操作,要考虑队列空或者满,还有越边界等情况,要迅速准确完成程序必须定义规则,无规矩无以成方圆。

1 head和tail两个标量的定义:

存放数据时:head 指向当前为空且即将写入数据的节点,写完后自加加;

提取数据时;tail 指向已弹出数据的节点,将下一节点的数据提取后自加加;

2 边界条件:

队列为空时,提取操作需判断tail下一节点是否为head。若是,则违背了head指向当前为空的节点的规则

队列为满时,存放操作需判断head是否等于tail,若等于这违背了tail指向已弹出数据的节点的规则;

3 操作细节:

存放数据或提取时,保证上一次操作后的标量下一次操作前有效,下一次无需判断即可。

或者每次操作前判断数据操作越界与否,如果还有其他判断则推荐使用上者。

具体实现如下:

 

归入正题:实现可读写并发,需要满足一个写线程在执行至pushQue函数内任意语句时发生线程切换,切换至另一读线程调用popQue函数运行,然后恢复至原线程pushQue运行,队列内部不发生错误。循环单链表实现。

 

 

 

  用熟一个好的IDE是多么的重要啊!

 

 

原创粉丝点击