WEB开发网
开发学院手机开发Symbian 开发 Symbian 操作系统中的线程和进程 阅读

Symbian 操作系统中的线程和进程

 2010-03-18 20:57:00 来源:WEB开发网   
核心提示:EExcPageFaultKExceptionFpe ->EExcFloatDenormal, EExcFloatDivideByZero, EExcFloatIndexactResult, EExcFloatInvalidOperation, EExcFloatOverflow, EExcFloatStackC
EExcPageFault

KExceptionFpe ->EExcFloatDenormal, EExcFloatDivideByZero, EExcFloatIndexactResult, EExcFloatInvalidOperation, EExcFloatOverflow, EExcFloatStackCheck, EExcFloatUnderflow

KExceptionAbort ->EExcAbort

KExceptionKill->EExcKill

6、其他线程函数

TInt Rename(const TDesC& aName)

为线程定义个新名字。

void RequestComplete(TRequestStatus*& aStatus, TInt aReason)

通知线程与一个异步请求绑定的请求状态对象aStatus已具完成。sStatus完成代码将负责设置aReason及发出线程请求信号的通知。

TInt RequestCount()

返回线程请求信号的数目。如果是负值则表示该线程正在等待至少一个异常请求的完成。

void HandleCount(TInt& aProcessHandleCount, TInt& aThreadHandleCount)

得到线程中及拥有该线程的进程中处理模块的数目。

RHeap* Heap()

返回一个指向改线程堆的指针。

TInt GetRamSizes(TInt& aHeapSize, TInt& aStackSize)

得到该线程中堆和栈的大小。

TInt GetCpuTime(TTimeIntervalMicroSeconds& aCpuTime)

得到改线程所分配到的CPU时间

void Context(TDes8& aDes)

得到该线程( sleeping状态)所注册的上下文环境。

四、线程内部的通信

1)共享内存

在线程间交换信息最直接的方法就是使用共享内存。线程入口函数中有一个参数TAny* aPtr,这个指针可以用于任何目的。通常可以用它来传递一个负责线程间共享信息的数据结构或类实例。因为同一进程中的线程是共享内存地址空间的,因此这里指针所指向的数据可以被两个线程所共享,注意访问该数据时必须是同步形式。

另外这里的指针参数可以使用 SetInitialParameter(TAny* aPtr)方法来改变,但这时线程应处于suspend状态。

2)Client/Server API

Symbian操作系统提供了一组基于 server/session的API,允许一个线程扮演server的角色,向其他线程或进程提供服务。这里API也提供处理一组方法处理信息的传递,异步以数据传输。

3)进程内数据传输

如果两个线程分属不同的进程,则他们无法直接管理需要通信的数据,因为他们没有共享的数据区。这里可以使用RThread提供的ReadL()方法及WriteL()方法,我们可以用来在当前线程和由RThread提供的另一个线程间的地址空间拷贝8/16位的数据。这里当前线程和另一个线程可以归属同一个进程也可分属不同进程。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Symbian 操作系统 线程

编辑录入:coldstar [复制链接] [打 印]
赞助商链接