Symbian 线程

 

*线程
 - 线程是多任务的基础,允许多个代码序列同时执行
 - 在Symbian操作系统中,可以同时创建多个线程,但是会带来管理复杂和巨大的系统开销
 - 在Symbian操作系统中,操作线程的类是RThread,其对象表示一个线程的句柄
 - RThread的基类是RHandleBase,它封闭了通用句柄的行为,用于表示Symbian操作系统中对象的句柄

 

*创建和启动线程
 TInt Create(const TDesC& aName, THreadFunction aFunction, TInt aStackSize, RHeap* aHeap, TAny* aPtr, TOwnerType aType = EOWnerProcess)
 TInt threadFunc(TAny*)
 {
  for (TInt i=0; i<10; i++)
  {
   User::InfoPrint(_L("Thread"));
   User::After(1000000);
  }
  return 0;
 }
 void StartThreadL()
 {
  RThread thd;
  User::LeaveIfError(thd.Create(_L("MyThread"),threadFunc,KDefalutStactSize,NULL,NULL);
  thd.Resume();//线程创建后是挂起状态,这一步是启动线程
 }

 

*打开已经存在的线程
 RThread thd;
 TInt rc = thd.Open(_L("MyThread"));
 if (rc != KErrNone)
 {
  
 }
 if (thd.EXitType() == EExitPending)//如果进程已经存在并且还在运行
 thd.Suspend();//挂起进程,既等待进程运行完毕
 ……
 thd.Resume(); //继续线程执行


*线程的优先级(均是相对所在进程的优先级而言)
 - EPriorityNull(-30)
 - EPriorityMuchLess(-20)
 - EPriorityLess(-10)
 - EPriorityNormal(0)
 - EPriorityMore(+10)
 - EPriorityMuchMore(+20)
 - EPriorityRealTime(+30)


*终止线程
 - 可以使用RThread::Kill(TInt aReason)来终止线程
 - RThread提供ExitType()和ExitReason()来返回线程终止的原因
 - ExitType()返回值包括
  ·EExitKill: 线程函数返回或显示调用Kill()函数
  ·EExutPanic:线程因为严重错误而结束
  ·EExitPending:线程仍在运行
 - ExitReason()返回值包括
  ·返回代码:线程函数正常返回
  ·终结代码:线程调用Kill()函数
  ·错误代码:线程因为严重错误而退出
  ·零:线程仍在运行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值