在symbian 中常使用活动对象CActive 来代替线程的使用,但活动对象不是真正意义的线程。 对于一些并发计算量大,实时性高的应用我们应使用线程来实现。
symbian 使用RThread类来创建线程。RThread的基类是RHandleBase,另外RProcess,RMutex和RSession-Base都继承自RHandleBase。
1. 构造线程对象
RThread iThread;
const TInt KMinHeapSize=0x100;
iThread.Create(_L("threadname",ThreadFun,4096,KMinHeapSize,256*KMinHeapSize, this);
iThread.Resume(); //运行线程
2. 创建线程函数
static TInt ThreadFun(TAny *aPtr);
线程函数可定义在该类中,但应定义成静态成员函数.
TAny* 相当于void * 可使用static_cast<> 进行类型转换.
3. 线程运行
当一个线程创建后,线程处于挂起状诚,使用iThread.Resume()运行线程.
4. 挂起线程
iThread.Suspend()
5. 结束线程
iThread.Kill(KErrNone); iThread.Terminate(KErrNone);
6.释放资源
iThread.Close();
7.RMutex 互斥对象用于线程同步
创建对象.iMutex.CreateLocal();
互斥使用代码
iMutex.Wait();
.....
iMutex.Signal();