线程的TLS有什么作用

线程的TLS有什么作用,第1张

TLS是一种机制,借由它,线程可以持有一个指针,指向它自己的一份数据结构拷贝.

---------------------------------------------------------------

线程区域储存空间 (TLS)

多线程程序中的整体变量(以及任何被配置的内存)被程序中的所有线程共享。在一个函数中的局部静态变量也被使用函数的所有线程共享。一个函数中的局部动态变量是唯一于各个线程的,因为它们被储存在堆栈上,而每个线程有它自己的堆栈。

对各个线程唯一的持续性储存空间有存在的必要,这就叫做线程区域储存空间。

---------------------------------------------------------------

Thread Local Storage是一个实现Thread的全局数据的机制,并且这些数据仅仅在这

个Thread中可见,因为这些数据保存在该Thread的Thread DataBase中:在每一个Thread

DataBase中都定义了一个64元的DWORD数组用来保存这些数据。同时 *** 作系统也提供了相应

的函数来完成对这些数据的 *** 作,如:TlsAlloc,TlsFree,TlsSetValue,TlsGetValue。

在MFC中,也提供了TLS功能,为此MFC设计了一系列的类和程序来完成这个任务。具体

的程序在afxtls.cpp和afxtls_.h中。

涉及到的主要的类有:

class CTypedSimpleList : public CSimpleList

struct CThreadData : public CNoTrackObject

struct CSlotData

class CThreadSlotData

class CThreadLocal : public CThreadLocalObject

其中CThreadSlotData是封装TLS的最重要的类,CTypedSimpleList,CSlotData,CTh

readDAta都是为了封装TLS而设计的只具有辅助功能的类。CThreadLocal是更高层的封装。

ssl/tls 认证的工作流程简单概括如下,楼主看参考下:

web服务器申请证书,吧csr文件提交给ca,ca签发证书给web服务器(证书包括中级证书和服务器证书/ 证书里包含公钥信息,web服务器的身份信息)

1 客户机申请链接,包含自己可以实现的算法列表,和其他信息,

2 服务器回应链接,回应中确定了这次通信所需要的算法,并发送自己的证书过去,证书中包含了自己的身份和公钥,

3 客户端在收到消息后会生成一个秘密消息clientkeyexchange--(此秘密消息进行处理后,将用做加密密钥(会话密钥)),并用web服务器的公钥加密,传过去

4 服务器在用私钥解密秘密消息clientkeyexchenge,并进行处理,生成加密密钥(会话密钥),会话密钥协商成功,

5 客户端和服务器端都知道了会话密钥,并用此会话密钥进行数据加密。

简单来说,就是用服务器证书的公司密钥对协商出一个对称密钥,然后用对称密钥进行加密。

ssl证书一般是用于对于网站安全要求性比较高的站点上的,国际上比较知名的ssl证书有verisign,geotrust,thawte,等证书品牌,据了解,这几种证书品牌的大陆官方代理商是北京天威诚信,楼主有需求的话,可以了解下。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11220422.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存