代码改变世界

手机系统中多任务处理方式的一种新想法——无责任YY

  JimLiu  阅读(823)  评论(0编辑  收藏  举报

说是无责任YY,因为我没设计过操作系统,也不知道做操作系统有多难。

现在的手机还没法把多任务处理的很好,让我感觉稍微好点的,反而是“古老”的Symbian S60。因为是手机的硬件不够强大,所以这也是没办法的事情。不过我昨天YY了一种新方法:

规定应用程序维护两个消息循环(通过这个词应该可以看出我被Windows编程所侵蚀了,呃……),一个前台循环,主要负责UI和操控;一个后台循环,主要负责网络、音频、地理定位、接收系统推送的通知等。这样当任务切换到后台的时候,前台循环就挂起,后台循环继续活动。就可以节省很多CPU资源。

不过这样,前台循环占用的大量内存还是得不到释放,这显然对于手机这样内存捉襟见肘的设备是奢侈的。所以我又YY了一种方法,就是前台和后台通过进程/线程间通讯来交换数据,比如共享内存的方法。这部分内存是必须得有的,后台循环必须负责更新和处理他们,前台读取来反应到UI上,UI上发生操控的时候也有一部分数据要写入共享区。但是前台本身的内存是单独享有的,前台挂起的时候可以把这部分内存swap起来,反正前台的进程/线程都挂起了,这部分内存占着空间也没用。

这样只是对现在的编程多了一些要求而已,但是开发者不会受很大的影响。如果不注册后台循环,程序就不具备多任务功能,一关就咪西咪西了,不能在后台执行;如果不注册前台循环,程序简单地退化成系统服务。

嗯,很好很YY。

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示