发明名称 一种多线程数据传输方法
摘要 本发明提供了一种多线程数据传输方法,定义两个整数值:writePos和readPos;其中,writePos表示数据写入线程当前正要写入所述数组空间的位置;readPos表示数据读取线程当前正要从所述数组空间读取数据的位置;数据写入成功,则writePos值自增;数据读取成功,则readPos值自增;定义一个整数掩码PosMask,其值为N‑1;通过PosMask的值与读写位置的值做与运算,来决定当前正要写入和读取的真正的数组空间的位置,即当前写入的位置应该是dataPtrArray[writePos&PosMask],读取的位置是dataPtrArray[readPos&PosMask]。能够解决两线程之间数据传输,即对队列容器这个临界资源实现无锁化的访问,极大提高性能。
申请公布号 CN106354572A 申请公布日期 2017.01.25
申请号 CN201610761793.8 申请日期 2016.08.31
申请人 成都科来软件有限公司 发明人 罗鹰;黄江;林康
分类号 G06F9/54(2006.01)I 主分类号 G06F9/54(2006.01)I
代理机构 成都九鼎天元知识产权代理有限公司 51214 代理人 郭彩红
主权项 一种多线程数据传输方法,具体方法为:初始化系统时,申请一个能够容纳N个指针的连续内存空间;所述N=2<sup>m</sup>,m为大于等于1的整数;每个指针位置为一个单位,N个指针位置组成一个数组空间dataPtrArray;所述指针指向用户数据地址;定义两个整数值:writePos和readPos;其中,writePos表示数据写入线程当前正要写入所述数组空间的位置;readPos表示数据读取线程当前正要从所述数组空间读取数据的位置;数据写入成功,则writePos值自增;数据读取成功,则readPos值自增,将被成功读取的数组空间位置的指针值清零;定义一个整数掩码PosMask,其值为N‑1;通过PosMask的值与读写位置的值做与运算,来决定当前正要写入和读取的真正的数组空间的位置,即当前写入的位置应该是dataPtrArray[writePos&amp;PosMask],读取的位置是dataPtrArray[readPos&amp;PosMask]。
地址 610041 四川省成都市高新区天华一路99号天府软件园B6-7
您可能感兴趣的专利