Symbian下的线程对象
Symbian下的线程对象类有 RThread, DThread, NThread.
RThread是用户层的,DThread是Kernel层的, NThread是nanokernel层的。
用户层的代码要创建一个线程用RThread,内核和驱动里要创建线程用DThread, nano内核层创建一个线程用NThread。
一个RThread就有一个DThread,一个DThread就有一个NThread,反过来不成立.
RThread就像对DThread的封装,句柄,提供给用户使用。
用户层要创建一个线程,RThread::Create会被调用,它会通过系统接口调用DThread::Create,
DThread::Create又会代用DThread::DoCreate, DThread::DoCreate又会调用NKern::ThreadCreate 创建线程的nanokernel部分。
所以创建一个RTHread就会生成一个DThread,生成一个DThread就会生成一个NThread。
DThread类有一个成员NThread iNThread;
这个成员就是与它关联的NThread。
一个RThread就有一个DThread很容易理解,为什么一个DThread还要有一个NThread呢,
这主要是因为symbian内部最后真正调度的对象是NThread。
RThread是用户层的,DThread是Kernel层的, NThread是nanokernel层的。
用户层的代码要创建一个线程用RThread,内核和驱动里要创建线程用DThread, nano内核层创建一个线程用NThread。
一个RThread就有一个DThread,一个DThread就有一个NThread,反过来不成立.
RThread就像对DThread的封装,句柄,提供给用户使用。
用户层要创建一个线程,RThread::Create会被调用,它会通过系统接口调用DThread::Create,
DThread::Create又会代用DThread::DoCreate, DThread::DoCreate又会调用NKern::ThreadCreate 创建线程的nanokernel部分。
所以创建一个RTHread就会生成一个DThread,生成一个DThread就会生成一个NThread。
DThread类有一个成员NThread iNThread;
这个成员就是与它关联的NThread。
一个RThread就有一个DThread很容易理解,为什么一个DThread还要有一个NThread呢,
这主要是因为symbian内部最后真正调度的对象是NThread。