Symbian 开发不可忽视的多线程
2010-03-12 04:33:00 来源:WEB开发网一、生成一个新线程
新的线程可以通过构造一个RThread对象,并调用它的Create()函数生成。如:
Code:
1: TInt threadFunction(TAny *aPtr)
2: RThread thread;
3 thread.Create(KThreadName, threadFunction, 4096, KMinHeapSize, 256*KMinHeapSize, &iParameter);
4: thread.Resume();
5.thread.Kill();
二、线程状态
一个线程的最重要的状态为运行、准备、等待和暂停。在生成后,线程首先处于暂停状态,你可以调用Resume()函数来启动它的运行。一个线程也可以通过调用Suspend()来进入中断状态。
线程一般通过Kill(TInt aReason)来结束,Terminate()与其相似。如果一个进程的主线程结束,则该进程与所属所有线程都将结束。
一种非正常关闭线程的方式就是调用Panic(const TDesC& aCategory, TInt aReason)来中断执行。
如何获得中断线程的信息呢,我们可通过ExitType(),ExitReason()以及ExitCategory()方法来获得。
线程可以在中断时发出请求,我们通过调用异步方法Logon()来完成此任务。返回值在aStatus中。LogonCancel()可以取消前次请求。
void Logon(TRequestStatus& aStatus) const;
TInt LogonCancel(TRequestStatus& aStatus) const;
我们可以通过SetProtected(ETrue)方法将线程保护起来,也可以通过SetProtected(EFalse)来取消保护。在保护时,另一个线程是无法中断、结束、异常中断或设置该线程的优先级的。Protected()方法可以返回该线程的保护状态。
三、访问线程及进程
我们可以通过构造一个RThread对象来访问当前线程。Id()方法可以返回改线程的ID。AVA手机网[www.cnj
拥有此线程的进程可以通过访问RThread的Process(RProcess& aProcess)方法来获得。这里传入的参数应该是一个RProcess对象。
其他线程可以通过Open()方法来访问。我们通过传递TThreadId、线程名称或TFindThread对象来打开线程。
TInt Open(const TDesC& aFullName, TOwnerType aType=EOwnerProcess);
TInt Open(TThreadId aID, TOwnerType aType=EOwnerProcess);
TInt Open(const TFindThread& aFind, TOwnerType aType=EOwnerProcess);
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
- ››Symbian 3 版的 Swype 输入法正式上架
- ››Symbian中的设计模式
- ››Symbian S60平台JAVA开发环境搭建步骤
- ››Symbian自定义控件—如何实现跑马灯效果
更多精彩
赞助商链接