TLS(线程本地存储)有何用?
解决方案 »
- #if _MFC_VER > 0x0600 是什么意思?
- MODBUS协议中的CRC校验码
- 用udp可以穿越防火墙吗
- 最近用IShellFolder2做了个遍历文件夹的程序,但是我发现当文件夹中文件数超过3000时,shell接口也不是很快啊,第一次遍历出再插入list要
- 对话框的问题
- 在程序中如何运行其他的EXE程序并指定其窗口位置及大小?
- 【RichEdit问题】1.CTRL+V如何控制? 2.如何禁止拖拉操作?
- 求助:VS2008在64位win7旗舰版下的使用activeX控件问题
- MFC 单文档多视图问题
- 能否用vc写个工具按钮添加在excel实现某些功能?
- 简单的复杂问题,ATL编写的ActiveX在Web 上可以被其他页面覆盖,而MFC编写的不行,为什么
- 请问高手们哈,怎么做一个股票系统啊?;-)
MFC使用TLS来追踪每一个线程所使用的GDI对象和USER对象。CWnds、CPens以及其他结构之能够使用于产生它们的那些线程之中,关于这一点,MFC是非常斤斤计较的。如果使用TLS,MFC就可以验证对象是不是在线程之间传递。
TLS对于DLL特别有价值,因为它的存在,DLL不需要不断地要求调用端函数传送一个指向“thread context”的指针过来。如果一个函数库被数百个甚至数千个地方调用,TLS的价值就完全彰显了,因为在所有那些调用处加上一个context指针,几乎是不可能办到的。
这在《Win32多线程程序设计》第14章有详细的讨论。