C#WindowsCE特点之实时性

C# Windows CE特点之实时性

义马ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

C# Windows CE的***一条设计目标是要支持实时系统的开发。在嵌入式编程中,实时性就是指在指定时间内完成指定任务的能力,这些任务可能是计算某个值,记录某次输入,或者是向某个外部设备发送一条命令。很多系统要求无论负荷有多么重,系统都应该能够连续可靠地执行这样的一个任务(或者是一些任务)。

从C# Windows CE 3.0开始,C# Windows CE开发团队就加入了一系列特性以支持实时系统的开发。其中包括支持256个线程优先级(C# Windows CE一直都支持多线程编程)和嵌套的中断请求。C# Windows CE对实时性的支持在C# Windows CE Platform Builder的文档中定义如下:

◆保证高优先级线程安排的上限,但仅对所有排队线程中优先级***的线程有效。

◆在执行高优先级中断服务程序(ISR,interrupt service routine)时保证延时的上限。在内核中专门设置了一些空间用于临时关闭中断服务。

◆确保对调度程序的控制,使其能顺利地安排线程。

实时系统可以根据需求分为两种,一种要求硬实时,另一种则要求软实时。软实时需求的系统在没有严重后果的情况下允许出现一些延时,而硬实时需求的系统中则不能出现任何一点延时。

硬实时需求系统的例子如工厂里控制机器手臂动作的系统。有时也许必须移开这个手臂才能让生产线继续向前流动,或者才能让其它的机器进入生产线开展工作,但是如果没有及时移开它,结果可能会导致这个手臂、产品或者部分生产线被破坏。(我们假设这样的事故会使整条生产线停下来,造成大量时间和成本的损失。)

尽管C# Windows CE提供很好的实时性支持,但.NET精简框架却不是一个理想的构建实时组件的编程接口。这是因为运行时引擎可能会出现各种时间间隔不等的延时。例如,在使用运行时编译执行(JIT,just-in-time)编译器(本章后面会有介绍)装载代码和将代码编译为本地机器代码时,都会出现延时。

托管代码与非托管代码

.NET精简框架代码有时也可作为托管代码,但对应用程序程序员来说,它最重要的特性是由运行时来管理数据,特别是已清除的数据。尽管代码也可以被托管,但是必须确保其中没有错误的内存指针。本书第3章将重点介绍这个问题。

相反,Windows API代码有时也可作为非托管代码。这是一种以.NET为中心处理问题的方法,尽管我们有时使用如本地代码和Win32代码之类不同的术语来指代它。

C# Windows CE遇到的问题,另外,当垃圾回收器工作的时候也可能出现延时,因为这时所有在托管代码中运行的线程都被冻结了,然而非托管代码则不会。因此,.NET精简框架托管代码可以支持实时线程16,但是多数情况下实时线程是通过调用Win32的DLL在非托管代码中实现的。当然,以上只是一些基本原则,如果是一个很快的CPU,系统负荷也很轻,在托管代码中运行的线程也能提供足够快的响应以满足这个系统实时性支持的要求。对于定时和性能的关系,我们需要“三思而后行”(measure twice and cut once),测量所需性能的次数往往跟错失实时性底限的程度成正比。

C# Windows CE特点之实时性的相关内容就向你介绍到这里,希望对你了解和学习C# Windows CE特点之实时性有所帮助。

当前标题:C#WindowsCE特点之实时性
文章转载:http://www.shufengxianlan.com/qtweb/news24/224874.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联