Symbian 中程序和线程对内存的占用
2010-06-22 02:57:00 来源:WEB开发网[Copy to clipboard]CODE:
//defined in some header.
typedef struct
{
int globalVal1;
...
char globalValn
}GlobalData;
//some .c or .cpp file
EXPORT_C void FunctionOne()
{
//Get the Dll's Tls
GlobalData* p = (GlobalData*) Dll::Tls();
FunctionOne_r ( p );
}
//re-entrant version of above function
void FunctionOne_r( GlobalData* p )
{
//use all those variables required pointed by the structure p
p->globalVal1 += 10;
p->globalValn = ‘C';
}
复制代码
假设MyDLL.DLL是一个连接2个或更多的名字是LIBRARYONE.DLL和LIBRARYTWO.DLL的DLL,那时这个MYDLL.DLL的线程将会有2个TLS为了上面的2个DLL。当MyDLL.DLL用LIBRARYONE.DLL里的功能的时候这时的TLS将会和用 LIBRARYTWO.DLL时的TLS不一样。
为WSD用客户端服务端架构
因为EXE不能被共享,Symbian OS支持EXE里的可写的共用静态数据。服务端作为一个线程来运行,可能是一个独立的线程/程序,和他的客户端分开,或有可能是兼服务端或客户端,服务端可能被嵌入到一个同样的程序象2个不同的线程。当服务端运行的象一个分开的程序的时候,可能这个是一个EXE。因为EXE可以有自己的WSD,在一般策略是把全部的共用数据放到服务端上,然后在暴露一些API例如客户端接口来让客户端修改这些共用可变数据。
更多精彩
赞助商链接