[发明专利]多线程通过数组处理数据的方法、系统及多线程处理器有效
| 申请号: | 201310703259.8 | 申请日: | 2013-12-18 |
| 公开(公告)号: | CN103713884A | 公开(公告)日: | 2014-04-09 |
| 发明(设计)人: | 余欣 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司;广州西山居世游网络科技有限公司 |
| 主分类号: | G06F9/38 | 分类号: | G06F9/38 |
| 代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 陈国荣 |
| 地址: | 519000 广东省珠*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 多线程 通过 数组 处理 数据 方法 系统 处理器 | ||
1.一种多线程通过数组处理数据的方法,其特征在于,所述数组中的每一个元素包括数据和用于标志此元素是否存储有数据的状态值,且所述数组设置有存储计数和与存储计数对应的两个游标,所述存储计数用于标记数组中存储的元素个数,所述两个游标为存储游标和扩展存储游标,所述存储游标用于指示当前数组已存储的元素位置,所述扩展存储游标用于指示当前数组正在存储的元素位置,所述方法包括存储的步骤:
(11)判断存储计数与数组可存储元素个数的大小;
(12)当存储计数小于数组可存储元素个数时,存储计数加1,且将扩展存储游标加1使其移动至当前线程进行存储的元素位置,并执行步骤(3),否则,结束存储;
(13)将存储后的元素的状态值标记为已存储;
(14)循环执行步骤(12)和步骤(13),直至所有线程存储完相应的数据;
(15)依次检测存储游标至扩展存储游标之间所有元素的状态值,若元素的状态值标记为已存储,则将存储游标加1,否则,若元素的状态值标记为未存储,当前线程结束检测并返回。
2.根据权利要求1所述的方法,其特征在于,所述数组还设置有读取计数,所述读取计数用于标记数组中可读取的元素个数,在所述步骤(15)中,依次检测存储游标至扩展存储游标之间所有元素的状态值时,若元素的状态值标记为已存储,则将存储游标的值备份后通过原子交换函数将存储游标的值加1,同时,若原子交换函数返回的值与所述备份值相等,则将读取计数加1,并检测下一个元素,否则,当前线程结束检测并返回,若元素的状态值标记为未存储,当前线程结束检测并返回。
3.根据权利要求2所述的方法,其特征在于,所述数组还设置有与读取计数对应的另外两个游标,分别为读取游标和扩展读取游标,所述读取游标用于指示当前数组已读取的元素位置,所述扩展读取游标用于指示当前数组正在读取的元素位置,所述方法还包括读取的步骤:
(31)判断读取计数是否大于0;
(32)若读取计数大于0时,读取计数减1,且将扩展读取游标加1使其移动至当前线程进行读取的元素位置,并执行步骤(33),否则,结束读取;
(33)将读取后的元素的状态值标记为未存储;
(34)循环执行步骤(32)与步骤(33),直至所有线程读取完相应的数据;
(35)依次检测读取游标至扩展读取游标之间所有元素的状态值,若元素的状态值标记为未存储,则将读取游标的值备份后通过原子交换函数将读取游标的值加1,同时,若原子交换函数返回的值与所述备份值相等,则将存储计数减1,并检测下一个元素,否则,当前线程结束检测并返回,若元素的状态值标记为已存储,当前线程结束检测并返回。
4.根据权利要求3所述的方法,其特征在于,所述数组的大小为2的N次方,所述存储游标、扩展存储游标、读取游标、扩展读取游标在移动时,其游标值通过与数组大小进行取余操作指示相应元素的位置。
5.根据权利要求1至4任一所述的方法,其特征在于,所述状态值用0标记未存储,用1标记已存储。
6.一种多线程通过数组处理数据的系统,其特征在于,所述所述数组中的每一个元素包括数据和用于标志此元素是否存储有数据的状态值,且所述数组设置有存储计数和与存储计数对应的两个游标,所述存储计数用于标记数组中存储的元素个数,所述两个游标为存储游标和扩展存储游标,所述存储游标用于指示当前数组已存储的元素位置,所述扩展存储游标用于指示当前数组正在存储的元素位置,所述系统包括存储模块,所述存储模块包括:
存储判断单元,判断存储计数与数组可存储元素个数的大小;
存储移动单元,当存储计数小于数组可存储元素个数时,存储计数加1,且将扩展存储游标加1使其移动至当前线程进行存储的元素位置,并转移至存储标记单元执行相应命令,否则,结束存储;
存储标记单元,将存储后的元素的状态值标记为已存储;
存储循环单元,存储移动单元与存储标记单元依次循环执行,直至所有线程存储完相应的数据;
存储检测单元,依次检测存储游标至扩展存储游标之间所有元素的状态值,若元素的状态值标记为已存储,则将存储游标加1,否则,若元素的状态值标记为未存储,当前线程结束检测并返回。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司;广州西山居世游网络科技有限公司,未经珠海金山网络游戏科技有限公司;广州西山居世游网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310703259.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种行星齿轮减速机
- 下一篇:铜合金在养殖海洋生物中的用途





