windows程序设计中的问题

CTypedSimpleList<CThreadData*>m_list这个好像没见过啊!带一尖括号是什么意思?这几天在看windows程序设计第二版,看到“设计自己的线... CTypedSimpleList<CThreadData*>m_list这个好像没见过啊!带一尖括号是什么意思?

这几天在看windows程序设计第二版,看到“设计自己的线程局部存储”看得是一知半解的,有没有这节的视频,有的话发个!
展开
 我来答
百度网友38c8e98
2011-10-25 · TA获得超过2657个赞
知道小有建树答主
回答量:1131
采纳率:0%
帮助的人:583万
展开全部
<>尖括号表示里面为数据类型
这是一个模板类,类的数据类型在生成对象时指定

如CTypedSimpleList<int*>m_list
CTypedSimpleList<char*>m_list

应该是叫线程区域储存空间(TLS:thread local storage):
静态变量在线程之间是被共享的,因为它们位于程序的数据储存空间中。
动态变量对每一个线程则是唯一的,因为它们占据堆栈上的空间,而每个线程都有它自己的堆栈。
有时让两个或多个线程使用相同的函数,而让这些线程使用唯一于线程的静态变量,那会带来很大便利。这就是线程区域储存空间,例如,C中的strtok函数就要求这种型态的变量。
不幸的是,C语言不支持这类储存空间。但是Windows中提供了四个函数,它们实作了一种技术来做到这一点,并且Microsoft对C的扩充语法也支持它,这就叫做线程区域储存空间。
下面是API工作的方法:
首先,定义一个包含需要唯一于线程的所有数据的结构,例如:
typedef struct

{int a ;
int b ;
}
DATA, * PDATA ;
PDATA pdata ;

在主线程中呼叫TlsAlloc获得一个索引值,储存在一个整体变量中或者通过参数结构传递给线程函数:
dwTlsIndex=TlsAlloc () ;这个值可以。

在线程函数中,使用上面所获得的索引值为该数据结构配置内存:
TlsSetValue (dwTlsIndex, GlobalAlloc (GPTR, sizeof (DATA))));//该函数将索引值和该内存块联系起来。

PDATA pdata=(PDATA) TlsGetValue (dwTlsIndex);//该函数使pdata指向该内存块

现在函数可以设定或者使用pdata->a和pdata->b了。

在线程函数终止前,释放内存:GlobalFree (pdata) ;
或者GlobalFree(TlsGetValue (dwTlsIndex));

在主线程中,释放索引:
TlsFree (dwTlsIndex) ;
浙江启扬智能科技有限公司
2023-06-12 广告
不一定,ARM架构的嵌入式开发可以基于uc/os、Linux、Windows等操作系统,而不一定要使用LINUX操作系统。在ARM架构上,Windows和Linux都是可以使用的,而且许多嵌入式系统开发工具也都是支持这两种操作系统的。因此,... 点击进入详情页
本回答由浙江启扬智能科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式