WEB开发网
开发学院手机开发Symbian 开发 Symbian 开发不可忽视的多线程 阅读

Symbian 开发不可忽视的多线程

 2010-03-12 04:33:00 来源:WEB开发网   
核心提示:一、生成一个新线程新的线程可以通过构造一个RThread对象,并调用它的Create()函数生成,Symbian 开发不可忽视的多线程(2),如:Code:1: TInt threadFunction(TAny *aPtr)2: RThread thread;3 thread.Create(KThreadName, t

一、生成一个新线程

新的线程可以通过构造一个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);

上一页  1 2 3 4  下一页

Tags:Symbian 开发 不可

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