1 .一种实现进程间高效处理数据请求的方法,其特征在于,该方法是在客户进程和服
务进程之间使用同一块连续的共享内存区域,在共享内存区域上创建共享内存环形且无锁
队列和共享内存数据区,客户进程无锁访问写入请求到共享内存环形且无锁队列中,服务
进程读取共享内存环形且无锁队列的请求及数据,并在处理后写入共享内存环形且无锁队
列;其中,请求的实际数据存储在共享内存数据区中。
2 .根据权利要求1所述的实现进程间高效处理数据请求的方法,其特征在于,共享内存
环形且无锁队列按请求条目的大小切分,并设置两个指针,具体如下:
①、head:用于指示下一个可写的条目;
②、tail:用于指示下一个可读的条目。
3 .根据权利要求1所述的实现进程间高效处理数据请求的方法,其特征在于,每个共享
内存环形且无锁队列的条目是固定长度,共享内存环形且无锁队列的条目包括三个属性,
具体如下:
①、ID:请求的标识;
②、Start:该请求数据在共享内存数据区的起始地址
③、End:该请求数据在共享内存数据区的结束地址。
4 .根据权利要求1所述的实现进程间高效处理数据请求的方法,其特征在于,共享内存
数据区按固定大小分割为若干block,用于支持多并发请求的读取处理。
5 .根据权利要求1所述的实现进程间高效处理数据请求的方法,其特征在于,客户进程
发送请求具体如下:
从共享内存数据区申请size大小的共享内存,得到Start起始的n个共享内存block,客
户进程将请求数据写入该共享内存block中;
客户进程检查共享内存环形且无锁队列是否已满:
若能够写入新的请求,则申请一个请求ID,并创建共享内存环形且无锁队列条目,写入
共享内存环形且无锁队列head位置的共享内存数据区;
写入成功后,将head指向共享内存环形且无锁队列的下一个位置;
当head已经移到共享内存环形且无锁队列尾部时,则将head指向共享内存环形且无锁
队列起始位置。
6 .根据权利要求1所述的实现进程间高效处理数据请求的方法,其特征在于,服务进程
读取请求具体如下:
服务进程检查共享内存环形且无锁队列是否非空(tail!=head):
若有未读取的条目,则从共享内存环形且无锁队列的tail位置读取一个请求条目,根
据请求条目的[start ,end]索引,从共享内存数据区读取内存block,解析得到请求的数据,
并交给执行线程处理该请求;
请求处理成功后,服务进程释放共享内存数据区中的数据,并将共享内存环形且无锁
队列的tail指针移到下一个位置;
当tail已经移到共享内存环形且无锁队列尾部时,将tail重置到共享内存环形且无锁
队列起始位置。
7 .根据权利要求1‑6中任一所述的实现进程间高效处理数据请求的方法,其特征在于,
服务进程处理请求后,需要返回处理结果给客户进程具体如下:
权 利 要 求 书
1/2 页
2
评论