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

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

 2010-03-18 20:57:00 来源:WEB开发网   
核心提示:10: KMinHeapSize, 256*KMinHeapSize, &iParameter);11: thread.Resume();2、线程状态一个线程的最重要的状态为运行、准备、等待和暂停,在生成后,Symbian 操作系统中的线程和进程(2),线程首先处于暂停状态,你可以调用Resume()函数来启动它的运行

10: KMinHeapSize, 256*KMinHeapSize, &iParameter);

11: thread.Resume();

2、线程状态

一个线程的最重要的状态为运行、准备、等待和暂停。在生成后,线程首先处于暂停状态,你可以调用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() 方法可以返回该线程的保护状态。

3、访问线程及进程

我们可以通过构造一个 RThread对象来访问当前线程。Id()方法可以返回改线程的ID。

拥有此线程的进程可以通过访问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);

Code:

1: // * as a wildcard for the name search

2: _LIT(KFindAll, “*”);

3: // default RThread object, has a handle of the current thread

4: RThread thread;

5: TFullName fullName;

6: TFindThread finder(KFindAll);

上一页  1 2 3 4 5 6 7  下一页

Tags:Symbian 操作系统 线程

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