《Symbian OS:线程编程》hoolee中文版 二
来源:互联网 发布:sybase数据库启动命令 编辑:程序博客网 时间:2024/06/05 23:47
4、线程优先级
线程可以被赋予一个绝对或相对的优先级。绝对优先级定义了这个线程的总体优先级,不需要考虑其拥有者进程的优先级了。而赋予相对优先级时则将此线称定义为拥有者进程的优先级加上该相对优先级后的结果。
下面粗体标示的优先级值可以由用户代码设置:
Code:
enum TProcessPriority
{
EPriorityLow=150,
EPriorityBackground=250,
EPriorityForeground=350,
EPriorityHigh=450,
EPriorityWindowServer=650,
EPriorityFileServer=750,
EPriorityRealTimeServer=850,
EPrioritySupervisor=950
};
enum TThreadPriority
{
EPriorityNull=(-30),
EPriorityMuchLess=(-20),
EPriorityLess=(-10),
EPriorityNormal=0,
EPriorityMore=10,
EPriorityMuchMore=20,
EPriorityRealTime=30,
EPriorityAbsoluteVeryLow=100,
EPriorityAbsoluteLow=200,
EPriorityAbsoluteBackground=300,
EPriorityAbsoluteForeground=400,
EPriorityAbsoluteHigh=500
};
上面枚举出来的值中绝对优先级值为:
EPriorityAbsoluteVeryLow, EPriorityAbsoluteLow, EPriorityAbsoluteBackground, EPriorityAbsoluteForeground, EPriorityAbsoluteHigh.
相对优先级值为:
EPriorityMuchLess, EPriorityLess, EPriorityNormal, EPriorityMore, EPriorityMuchMore.
EPriorityNull是一个特殊值,它定义了最低的级别,Kernel idel thread使用的就是它*_*
EPriorityRealTime定义了除核心服务线程优先级外最高的总体优先级。
RThread中的Priority()方法返回了一个线程的优先级(按以上描述值)。我们也可以通过SetPriority(TThreadPrioriy aPriority)方法来修改优先级。
ProcessPriority()方法返回了拥有该线程之进程的优先级(按TProcessPriority描述值)。我们也可以通过SetProcessPriority(TProcessPriority)方法来修改该进程的优先级。
5、异常处理
每个线程都有自己的异常处理模块。当线程发生异常时会调用异常处理模块。异常处理模块的訽型为:
typedef void TExceptionHandler(TExcType);
RThread包含了下列异常处理相关的方法:
TExceptionHandler* ExceptionHandler()
返回该线程当前异常处理模块的地址。
TInt SetExceptionHandler(TExceptionHandler* aHandler, TUint32 aMask);
定义了该线程新的异常处理模块的地址,以及它所处理异常的类别。
void ModifyExceptionMask(TUint32 aClearMask, TUint32 aSetMask)
修改异常处理模块所定之异常类别,aClearMask参数定义了不再为异常处理模块所处理的类别,而aSetMask则定义了新的处理类别。
TInt RaiseException(TExcType aType);
引发线程上指定类型的异常,这时异常处理模块将被启动执行(发生在调用之后)。
TBool IsExceptionHandled(TExcType aType);
检查线程的异常处理模块是否捕捉到aType类型的异常。
(1)异常类别及类型
异常类型是一组针对单个异常的类型识别,主要用在异常发生时。
异常类别则代表一组异常形式。
异常类别的一个集是由一个或多个异常类别通过OR形式组合成的,如KExceptionInteger|KExceptionDebug,这些值用来设置及修改异常处理模块所处理的类别。
下面列示了所有的类型及类别。
异常类别 异常类型
KExceptionInterrupt ->EExcGeneral, EExcUserInterrupt
KExceptionInteger ->EExcIntegerDivideByZero, EExcIntegerOverflow
KExceptionDebug->EExcSingleStep, EExcBreakPoint
KExceptionFault ->EExcBoundsCheck, EExcInvalidOpCode,
EExcDoubleFault, EExcStackFault, EExcAccessViolation,
EExcPrivInstruction, EExcAlignment, EExcPageFault
KExceptionFpe ->EExcFloatDenormal, EExcFloatDivideByZero,
EExcFloatIndexactResult, EExcFloatInvalidOperation, EExcFloatOverflow,
EExcFloatStackCheck, EExcFloatUnderflow
KExceptionAbort ->EExcAbort
KExceptionKill->EExcKill
- 《Symbian OS:线程编程》hoolee中文版 二
- 《Symbian OS:线程编程》hoolee中文版
- 《Symbian OS:线程编程》hoolee中文版 一
- 《Symbian OS:线程编程》hoolee中文版 三
- 《Symbian OS:线程编程》hoolee中文版 四
- 《Symbian OS:线程编程》hoolee中文版 nokia论坛整理后收编
- Symbian OS:线程编程
- Symbian OS:线程编程
- 《Symbian OS:线程编程》
- Symbian OS 文件服务器(二)
- 《Symbian OS C++编程诀窍》
- Symbian 线程编程 | 实例
- symbian OS多媒体架构分析 之二
- Symbian OS 文件服务器(二) — 文件服务器会话
- 《Symbian OS Internal》 -- 窗口服务器(二)
- Nokia官方培训(Symbian 4300)笔记(二)-- Symbian OS Basics
- 使用Symbian OS字符串描述符编程
- 使用Symbian OS字符串描述符编程
- 联想ThinkPad E40新机磁盘分区问题
- 中文字符处理的一点点学习总结
- objective-c基本数据类型总结
- 解决std::ofstream操作中文路径下文件的问题
- opengl 与 opengles 的区别
- 《Symbian OS:线程编程》hoolee中文版 二
- WPF Summary:Window构成
- [S60Ex]进程间同步控制方法
- DCB 结构详解!
- Delphi使用StrToDatetime在不同操作系统出现不同的情况
- 《Symbian OS:线程编程》hoolee中文版 三
- 哪些项目唱主角?
- Java: tomcat的8080端口被占用
- Spirng事务配置