【技术实现步骤摘要】
一种基于队列的异步IO处理方法
本专利技术涉及计算机系统软件编程领域,特别是一种基于队列的异步IO处理方法。
技术介绍
在计算机系统软件中异步IO操作是常用的IO模式,相对于同步IO模式,异步IO对减少线程占用量和提高IO吞吐量有明显帮助。但在实际编程中还有一些不足,例如在提交异步IO后无法确定提交的IO操作是否已经开始执行,在多线程环境中每一次提交异步IO都需要考虑线程之间的互斥,即每一次提交异步IO请求到目标对象的队列中都需要使用锁机制保证请求投放到队列的正确性,在有大量IO操作需要提交的情况下会显著降低性能,即便使用原子操作实现的提交请求到队列的方式也只能解决多线程之间线程因为互斥而频繁挂起的问题,处理器的开销依然很大。
技术实现思路
本专利技术的目的是克服现有技术的上述不足而提供一种基于队列的异步IO处理方法,使异步IO操作的提交变得可控且更加高效。本专利技术的技术方案是:一种基于队列的异步IO处理方法,该方法的模块包含一个私有队列、一组功能接口和一个队列提交接口。功能接口用于向模块外部提供对该模块的相关操作,例如读操作、写操作。队列提交接口用于将模块外部临时队列中的结点批量提交到模块的私有队列。在模块外部,生产者需要先创建一个临时队列,然后通过功能接口生产者可连续多次调用该模块的功能。在生产者调用该模块功能的过程中,模块根据生产者调用的功能类型以及调用该功能所使用的参数创建IO请求结点并将请求结点放入生产者创建的临时队列,若模块功能单一也可将参数中提交的数据结点直接放入临时队列。在一系列连续的调用完成后生产者通过队列提交接口将临时队列中的所有结点批量 ...
【技术保护点】
1.一种基于队列的异步IO处理方法,该方法的模块包含一个私有队列、一组功能接口和一个队列提交接口;功能接口用于向模块外部提供对该模块的相关操作;队列提交接口用于将模块外部临时队列中的结点批量提交到模块的私有队列;其特征在于:模块外部的生产者需要先创建一个临时队列,然后通过功能接口生产者可连续多次调用该模块的功能;在生产者调用该模块功能的过程中,模块根据生产者调用的功能类型以及调用该功能所使用的参数创建IO请求结点并将请求结点放入生产者创建的临时队列;最后生产者通过队列提交接口将临时队列中的所有结点批量提交到模块的私有队列。
【技术特征摘要】
1.一种基于队列的异步IO处理方法,该方法的模块包含一个私有队列、一组功能接口和一个队列提交接口;功能接口用于向模块外部提供对该模块的相关操作;队列提交接口用于将模块外部临时队列中的结点批量提交到模块的私有队列;其特征在于:模块外部的生产者需要先创建一个临时队列,然后通过功能接口生产者可连续多次调用该模块的功能;在生产者调用该模块功能的过程中,模块根据生产者调用的功能类型以及调用该功能所使用的参数创建IO请求结点并将请求结点放入生产者创建的临时队列;最后生产者通过队列提交接口将临时队列中的所有结点批量提交到模块的私有队列。2.根据权利要求1所述的一种基于队列的异步IO处理方法,该方法的模块还包含一种使用原子交换操作将存在多个结点的队列中所有结点批量添加到另一个队列的方法,该方法的队列包含一个首指针和一个尾指针,队列中的每个结点包含一个链接指针,结点与结点之间通过链接指针连接起来,队列的首指针指向第一个结点即首结点,队列的尾指针指向最后一个结点即尾结点;其特征是:将存在多个结点的队列A中所有结点批量添加到队列B时,先使用原子交换操作将队列B的尾指针原子化的替换为指向队列A尾结点的指针同时将队列B原尾指针取出并判断,若队列B原尾指针是空指针则将队列B的首指针指向队列A的首结点,若队列B原尾指针不是空指针则将队列B原尾结点的链接指针指向队列A的首结点。3.根据权利要求1所述的一种基于队列的异步IO处理方法,其特征是...
【专利技术属性】
技术研发人员:龙恢,管志坚,
申请(专利权)人:长沙新弘软件有限公司,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。