WinCE 5 kernel thread priority真的很厉害
来源:互联网 发布:2016双十一淘宝交易额 编辑:程序博客网 时间:2024/05/01 00:26
下面是一个Windows Mobile6上的一个线程的实现体。
我要提醒一下
1. WinCE kernel是multi-task环境
2. 这个线程的实现看起来没什么特别
结论
这样一个thread直接会导致这个mobile系统无法正常使用,power button失效,keypad无法使用。
再次引导你误判
WinCE kernel是multi-task环境!一个thread不可能导致整个系统完蛋!对呀!你看仔细了么?看仔细了!这个线程没干什么呀?!
分析
虽然WinCE kernel是multi-task环境,但是task也是要被调度才能拿到执行权的。一个thread被剥夺执行权只有两个时机。
1. 操作系统 timer interrupt或者其他的中断
2. 这个thread做system call放弃执行权。包括WaitforSingleObject,Sleep这样的等待API
那么回头看上面的代码,
1. thread先设置自己的优先级在一个非常高的级别152(连power manager的thread也只有249)
2. 这个thread的for循环只是在大量消耗系统资源,几乎没给系统喘息的机会,因为他根本不去休息。
综上
这样的高优先级,疯狂占用CPU资源的thread在整个系统中危害是极大的。在这个thread陷入到它的for循环中后,这个系统表现出来的是停止响应,基本上是死机(但实际是并没有死)。
我这里不停的for只是一个模拟,类似的代码有多种表现形式,你自己可以想象。
我的目的不是让你只在这里看热闹,而是从这个例子我们可以知道thread虽然运行在multi-task环境,似乎不会影响其他人,可是事实是他确实会影响,而且非常影响。
结论
因此,如果你决定让自己的thread以很高的优先级运行,那么你一定要对自己的代码负责任,尽量不要让自己影响到别人,这是每个合格的程序员都应该去思考的东西。
- WinCE 5 kernel thread priority真的很厉害
- 苹果真的很厉害!
- Kernel Thread 的创建
- 你真的很牛很厉害吗?
- PRIORITY of Thread
- 装逼装的很厉害
- 美商婕斯的赋活青春精华露真的很厉害啊!!
- Linux Kernel Thread 的讨论
- 《南方周末》真厉害!
- 金融海啸真厉害。已经感觉到很大的寒意了。
- kernel thread
- 看起来很厉害的样子
- 很厉害的渲染模板
- 好像很厉害的样子
- linux中process, kernel thread, user thread的区别
- ARM官方《CMSIS-RTOS教程》之线程的管理和优先级Thread Management and Priority
- android 改变线程优先级Change Thread Priority
- 改变线程优先级Change Thread Priority
- 拆字小实验
- Two instances of global variable created when DLL depends on static library
- SQLserver游标原理和使用方法
- keil c51问答
- 关于System.in的推测
- WinCE 5 kernel thread priority真的很厉害
- Extjs源码中core目录下的Ext.js详解
- 【转】Symbian 开发提示(2)
- 什么是MES,Winform,CRM系统
- SQL 联接--->右向外联接 (右外联接 ..right outer join..on)
- 如何使用Phantom系统构建和维护软件测试环境
- 锤子是最好的杀人工具
- 在tomcat6中使用log4j记录日志
- 开始编程序