基于线程局部存储技术的多通道数控系统仿真.docx

基于线程局部存储技术的多通道数控系统仿真.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

??

???

基于线程局部存储技术的多通道数控系统仿真

???

?

?

?

?

?

???

???

?

?

?

?

?

???

?

?

?

?

1概述

组件对象模型(CompONentObjectModel,COM)是由美国微软公司提出的一种二进制代码互操作规范,ActiveX是实现了一些特定接口(例如IDispatch)的标准COM组件。

COM/ActiveX规范已成为软件业内最重要的工业标准之一。

基于组件的软件构架方法通过重用已有的软件组件,可使软件开发者像搭积木一样快速构造应用软件,从而提高生产效率,使软件设计更加规范可靠。目前基于组件的软件开发方法已经在业界得到广泛应用。在数控系统中也使用组件技术实现加工仿真,但现有文献较少涉及多个ActiveX组件实例的情况。ActiveX组件采用类似Windows消息运行机制的单套间模型(SingleThreadedApartment,STA)来串行化对组件属性和方法的调用,即对ActiveX组件的所有调用由COM系统负责线程的同步。因此,该组件的调用是线程安全的。

COM在STA套间内的线程中创建一个隐藏窗口,将套间外的线程对这个对象的调用都转变成对隐藏窗口发送消息,并由隐藏窗口的消息处理函数来实际调用组件对象,从而实现STA套间模型。

一个进程中的所有线程均处于同一虚拟地址空间,每个函数的局部变量在运行该函数的每个线程中都是唯一的,但静态和全局变量则被所有线程所共享。即在多个ActiveX组件实例的情况下,ActiveX组件的STA模型不能保证全局数据成员是线程安全的。

2线程局部存储原理

线程局部存储(ThreadLocalStorage,TLS)是Win32系统提供的一种简化多线程程序设计的底层基础技术,其实质是介入全局数据创建过程,建立并管理全局数据与线程的关联,使得全局数据为其关联线程所私有。TLS原理如图1所示。

每个进程拥有一组TLS槽口(Slot),每个槽口用序号标识,Windows2000有1088个这样的槽口。线程通过API函数可以分配TLS槽口,在TLS槽口存取数据,进程中使用同一个序号的不同线程可指向独立的局部堆内存中进行数据存储,即线程ID和槽口号确定了一个二维空间映射,线程通过API函数获得线程间相互独立的数据存储地址。

图1也表明了采用TLS机制的具有2个ActiveX组件实例的运行时软件内存结构,进程分配了2个TLS索引值gdwTlsIndex1和gdwTlsIndex2,这2个索引值代表了TLS槽口的序号,但不同线程按照相同的序号却得到2个独立的局部堆地址,而这些数据在线程内却具有全局数据的可访问性,即每个线程有单独的全局数据拷贝,该数据对线程内的函数具有全局作用域。

Win32系统中与TLS有关的API及用法如下:

(1)进程初始化时分配TLS槽口:

DWORDgdwTlsIndex;gdwTlsIndex=TlsAlloc();

(2)调用TlsSetValue保存数据:

LPVOIDlpvBuffer;lpvBuffer=(LPVOID)LocalAlloc(LPTR,256);

TlsSetValue(gdwTlsIndex,lpvBuffer);//保存存储区指针

(3)调用TlsGetValue取数据:

LPVOIDlpvData;lpvData=TlsGetValue(gdwTlsIndex);//取TLS槽口中保存的存//储区指针

(4)调用TlsFree释放槽口:

lpvBuffer=TlsGetValue(gdwTlsIndex);

LocalFree((HLOCAL)lpvBuffer);//释放存储区

TlsFree(gdwTlsIndex);//释放TLS槽口

?

-全文完-

?

文档评论(0)

159****4221 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档