本发明涉及分布式数据库,具体地说是一种灵活高效的进程间数据传输方法及装置。
背景技术:
1、对于面向物联网的分布式数据库,数据流量非常庞大,需要承受的数据传输压力也非常大。对于在同一个节点上的不同进程而言,共享内存就是最快速的数据传输方式。但是共享内存本身没有安全的同步机制,而共享内存本身处于多个进程之间,对于并发的控制要求更高。因此数据传输时需要特别注意对并发同步的控制,保证安全的同时尽量提高数据访问的高效和灵活。
技术实现思路
1、本发明的技术任务是针对以上不足之处,提供一种灵活高效的进程间数据传输方法及装置,可以提供对数据更灵活的访问控制,满足各种性能、资源要求的场景。
2、本发明解决其技术问题所采用的技术方案是:
3、一种灵活高效的进程间数据传输方法,使用基于共享内存传输数据,并使用原子变量结合灵活的并发控制方法实现高效灵活的并发访问;
4、所述并发控制方法采用原子变量实现多进程和多线程的并发安全;采用支持阻塞和非阻塞模式,超时时间,条件判断回调实现数据访问的灵活性。
5、本方法实现同一台机器上的进程之间数据的灵活高效传输;利用进程处于同一台机器上的共享内存提供数据的高效传输;同时通过原子变量实现并发那圈,解决多进程以及多线程同时访问共享内存带来的并发问题,并提供比传统mutex更好的性能;通过实现本方法的数据访问控制方法,可以提供对数据更灵活的访问控制,满足各种性能,资源要求的场景。
6、进一步的,数据传输的过程如下:
7、1.1)发送进程将数据写入共享内存的指定位置;
8、1.2)检查原子变量判断是否可以写入;
9、可以写入,写入数据并重置原子变量;转步骤1.7);
10、不可以写入,检查是否是阻塞模式;
11、1.3.1)不是阻塞模式,立即返回;转步骤1.7);
12、1.3.2)是阻塞模式,等待原子变量状态为可写入;
13、1.4.1)等待并获得可写入状态,写入数据并重置原子变量;转步骤1.7);1.4.2)等待未获得可写入状态,检查是否超时;
14、1.5.1)已超时,立即返回;转步骤1.7);
15、1.5.2)未超时,检查是否有满足条件回调;
16、1.6.1)满足条件回调,立即返回;转步骤1.7);
17、1.6.2)不满足条件回调,继续等待;转步骤1.3.2);
18、7)返回操作结果。
19、进一步的,数据接收的过程如下:
20、2.1)接收进程从共享内存的指定位置读取数据;
21、2.2)检查原子变量判断是否可以读取;
22、可以读取,读取数据并重置原子变量;转步骤2.7);
23、不可以读取,检查是否是阻塞模式;
24、2.3.1)不是阻塞模式,立即返回;转步骤2.7);
25、2.3.2)是阻塞模式,等待原子变量状态为可读取;
26、2.4.1)等待并获得可读取状态,读取数据并重置原子变量;转步骤2.7);2.4.2)等待未获得可读取状态,检查是否超时;
27、2.5.1)已超时,立即返回;转步骤2.7);
28、2.5.2)未超时,检查是否有满足条件回调;
29、2.6.1)满足条件回调,立即返回;转步骤2.7);
30、2.6.2)不满足条件回调,继续等待;转步骤2.3.2);
31、2.7)返回操作结果。
32、进一步的,该方法的实现方式如下:
33、首先,在机器上创建共享内存,提供给多个进程可以同时访问,共享内存的高效保证了高速传输的基础;数据的访问包括数据的读取和数据的写入;
34、其次,在共享内存内创建用于通信的数据结构;数据结构放在共享内存中的约定位置,使不同进程都可以访问到;
35、然后,在共享内存中创建原子变量,原子变量的状态用于标识数据结构的访问状态。
36、优选的,所述数据结构是数组,链表,队列,栈,或一定格式的结构体。
37、进一步的,结合原子变量和控制算法实现灵活高效的数据访问,包括:
38、通过原子变量的状态切换和循环等待实现高效且并发安全的轮询;
39、通过为数据访问函数指定阻塞和非阻塞模式控制其访问数据的行为,即是否等待直到访问到数据;
40、通过为阻塞模式指定超时时间控制阻塞模式下的行为,即在等待一段时间后即使未访问到数据也返回;
41、通过为阻塞模式指定条件回调控制阻塞模式下的行为,即调用者可以通过一定条件控制何时结束等待,满足更灵活的使用。
42、优选的,使用递进的等待逻辑,原子变量轮询的间隔时间并非一成不变,而是不断增加,最终达到稳定,从而降低资源损耗,性能最大化。
43、本发明还要求保护一种灵活高效的进程间数据传输装置,包括:
44、共享内存,用于提供给多个进程数据的访问,包括数据的读取和数据的写入;
45、并发控制模块,用于采用原子变量实现多进程和多线程的并发安全;采用支持阻塞和非阻塞模式,超时时间,条件判断回调实现数据访问的灵活性;
46、该装置能够实现上所述的灵活高效的进程间数据传输方法。
47、本发明还要求保护一种灵活高效的进程间数据传输装置,包括:至少一个存储器和至少一个处理器;
48、所述至少一个存储器,用于存储机器可读程序;
49、所述至少一个处理器,用于调用所述机器可读程序,实现上述的方法。
50、本发明还要求保护一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,实现上述的方法。
51、本发明的一种灵活高效的进程间数据传输方法及装置与现有技术相比,具有以下有益效果:
52、通过结合共享内存,数据访问效率较之socket、消息队列、信号量、管道等其它传统进程间通信方式大大提高;通过的灵活的数据访问方法,实现数据访问的强适应性,满足多种场景需求;通过递进式的轮询时间,最大化资源利用率。
1.一种灵活高效的进程间数据传输方法,其特征在于,使用基于共享内存传输数据,并使用原子变量结合灵活的并发控制方法实现高效灵活的并发访问;
2.根据权利要求1所述的一种灵活高效的进程间数据传输方法,其特征在于,数据传输的过程如下:
3.根据权利要求1所述的一种灵活高效的进程间数据传输方法,其特征在于,数据接收的过程如下:
4.根据权利要求1所述的一种灵活高效的进程间数据传输方法,其特征在于,该方法的实现方式如下:
5.根据权利要求4所述的一种灵活高效的进程间数据传输方法,其特征在于,所述数据结构是数组,链表,队列,栈,或一定格式的结构体。
6.根据权利要求4所述的一种灵活高效的进程间数据传输方法,其特征在于,结合原子变量和控制算法实现灵活高效的数据访问,包括:
7.根据权利要求4或6所述的一种灵活高效的进程间数据传输方法,其特征在于,使用递进的等待逻辑,原子变量轮询的间隔时间不断增加,最终达到稳定。
8.一种灵活高效的进程间数据传输装置,其特征在于,包括:
9.一种灵活高效的进程间数据传输装置,其特征在于,包括:至少一个存储器和至少一个处理器;
10.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,实现权利要求1至7任一项所述的方法。