140  
查询码:00000279
线程安全的GetLastError
作者: 董康康 于 2020年06月30日 发布在分类 / 物联网组 / 第三方代理网关 下,并于 2020年06月30日 编辑

1.问题提出

很多库都会提供GetLastError的函数,很明显这是一个全局函数,在代码的任何地方调用GetLastError都应该准确表明上一次出错的原因,但是我们平时写的程序都是多线程,如何保证GetLastError在不同的线程里面都能得到正确的出错原因呢?-----------------------------与线程相关的全局变量?

2.解决方案

在c++11之前可能要动用一些脑筋,为每个线程分配一个变量来表明出错的原因,但是在c++11之后,我们有更完美的解决方案,thread_local关键字,但凡用thread_local声明的的变量,默认每个线程都会产生他的副本,并且这些副本不会相互影响,换句话说,在不同的线程去看程序里同一个变量,看到的是不同的变量值,既然全局变量线程分离了,那么很明显就可以利用这个变量实现GetLastError的功能




 推荐知识

 历史版本

修改日期 修改人 备注
2020-06-30 19:44:25[当前版本] 董康康 创建版本

知识分享平台 -V 4.8.7 -wcp