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

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

 2010-07-04 15:55:00 来源:WEB开发网   
核心提示:WriteL()方法,我们可以用来在当前线程和由RThread提供的另一个线程间的地址空间拷贝8/16位的数据,Symbian操作系统中的线程和进程(6),这里当前线程和另一个线程可以归属同一个进程也可分属不同进程,数据的传输是通过拷贝数据来完成的,然而每个DLL中每个线程都会分配一个32位字符空间,这个字符用来存放一
WriteL()方法,我们可以用来在当前线程和由RThread提供的另一个线程间的地址空间拷贝8/16位的数据。这里当前线程和另一个线程可以归属同一个进程也可分属不同进程。

数据的传输是通过拷贝数据来完成的,RThread提供了方法返回在它地址空间内一个descriptor的长度及最大允许长度。

a>读取另个线程所提供的descriptor

void ReadL(const TAny* aPtr,TDes8& aDes,TInt anOffset) const;

void ReadL(const TAny* aPtr,TDes16 &aDes,TInt anOffset) const;

这里ReadL()方法从另一个线程的descriptor(由aPtr所指)中拷贝一组数据,传递到当前线程的descriptor(由aDes所指)。

aPtr指针必须指向一个在RThread句柄所指线程的地址空间中有效的descriptor。

从源descriptor中的内容是从anOffset位置那里开始拷贝到目的descriptor(aDes)的。

b)向另个线程写入descriptor

void WriteL(const TAny* aPtr, const TDesC8& aDes, TInt anOffset) const;

void WriteL(const TAny* aPtr, const TDesC16& aDes, TInt anOffset) const;

用这个方法将当前线程descritor(aDes)所提供的数据都拷贝在另一个线程(aPtr所指)的descriptor中。这里anOffset参数设定了目标descriptor的初始化拷贝位置。

aPtr为线程地址空间内有效的可修改descriptor。

如果拷贝进去的数据长度超过目标descriptor的最大长度,则函数会发生异常。

c)Descriptor帮助函数

TInt GetDesLength(const TAny* aPtr) const;

TInt GetDesMaxLength(const TAny* aPtr) const;

这里RThread的GetDesLength()方法可以返回aPtr所指向的descriptor长度。这里descriptor必须为RThread句柄所指定的线程的地址空间中。

RThread的GetMaxDesLength()方法返回aPtr所指向descriptor的最大长度。descriptor也应在RThread句柄所指的线程地址空间中。

建议在ReadL()和WriteL()等方法前使用这些函数。

4.4线程局部存储(TLS)

Symbian操作系统是不允许在DLL中出现可写静态变量的。然而每个DLL中每个线程都会分配一个32位字符空间。这个字符用来存放一个指向数据结构或类示例的指针。分配和释放这些资源可在例如DLL的入口函数E32Dll中处理。

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

Tags:Symbian 操作系统 线程

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