当前位置: 首页 > 专利查询>何子杰专利>正文

使用lambda表达式实现的基于过程的异步调用模型制造技术

技术编号:14694979 阅读:40 留言:0更新日期:2017-02-23 19:09
一种以lambda表达式描述的基于过程的异步调用模型,可取代或与现有异步调用模型协同工作以实现服务器软件的最大吞吐量和并发处理能力。同时提供基于过程的锁、信号量、计时器等,以实现多过程间的同步,可完全替代现有的同步调用模型。

【技术实现步骤摘要】

本专利技术涉及一种全新的异步调用模型,以取代或与现有异步调用模型协同工作以实现服务器软件的最大吞吐量和并发处理能力,并使用lambda表达式和过程化理念以达到更简便的开发流程和更高的代码可维护性。
技术介绍
常见操作系统的默认配置会更多的考虑线程调度的均衡性,即不会让一个线程过多的使用处理器资源。所以常见的线程调度算法的时间复杂度都在O(log(n)),其中n为整个操作系统中线程的数量。但是这种调度方式往往带来负面效果。1.过多的处理器资源被使用在了调度线程本身,根据测试结果,1000个线程反复在等待和执行状态间切换可能会导致调度线程的操作占用超过40%的处理器资源。2.真正需要进行处理器运算的线程可能无法得到资源,从而导致饥饿情况的发生。3.对于服务器软件,调度的公平性往往不及吞吐量和平均响应时间关键,复杂的调度算法对于服务器软件反倒是不利的。为了解决这种问题,并实现最大的吞吐量和并发处理能力,通常的开发指南上会推荐使用异步模型。即在异步操作出现时,施放当前线程供别的任务使用。异步调用往往需要保留状态,开发和调试难度要远大于同步模式。并且因为包括锁在内的同步信号量本身仍然是同步的,所以除非进行非常精妙的调整,即便使用异步模型往往仍并不能够完全利用处理器资源。最大化处理器利用率的前提因为前文所述的线程调度占用处理器资源的情况,所以最大化处理器利用率的方式是依照处理器核心数分配线程。即每个处理器核心只分配一个线程,并且如果可能尽量不进行线程的调度,比如设置处理器和线程的亲和度等。
技术实现思路
面向过程而非线程的开发概念虽然并没有人这么指出,但是传统的软件开发是面向线程的,一段逻辑自开始到结束都只会在一个线程中运行。并且所有同步信号量也是面向线程设计的,同步锁总是阻止当前线程直到获得。因为根据使用情况的不同,往往无法确定一个同步信号量的可能阻断时间,因此无法确定究竟需要为每个处理器核心分配几个线程才能最大化利用处理器资源。为此需要将线程的分配和包括同步信号量、磁盘或网络IO等在内的操作分离开。即产生了面向过程的开发概念。一个过程可以被描述为处理器和内存操作和等待操作的交替组合,处理器和内存操作为常见的运算、赋值等操作,等待操作包括等待同步信号量、磁盘或网络IO、一个特定时间、另一个过程结束、一个事件被触发等。若干步处理器和内存操作并不保证会在同一个线程中被执行,而当一个步骤的处理器和内存操作结束时,如果等待条件被触发,当前过程就会进入等待状态,直到等待的条件结束再被重新唤起。同时一个过程在执行处理器和内存操作时亦可以指定下次的步骤。描述即为,Procedure:{Step1:{Memory/processorwork;Waitforasignal;Gotostep2本文档来自技高网...

【技术保护点】
过程化程序设计思想,即将一段逻辑分为若干个处理器、内存操作的步骤和IO、锁、信号量等的等待的交替操作。

【技术特征摘要】
1.过程化程序设计思想,即将一段逻辑分为若干个处理器、内存操作的步骤和IO、锁、信号量等的等待的交替操作。2.及基于此种设计思想的面向过程的锁和信号量的设计。3.使用...

【专利技术属性】
技术研发人员:何子杰
申请(专利权)人:何子杰
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1