1.问题提出
很多库都会提供GetLastError的函数,很明显这是一个全局函数,在代码的任何地方调用GetLastError都应该准确表明上一次出错的原因,但是我们平时写的程序都是多线程,如何保证GetLastError在不同的线程里面都能得到正确的出错原因呢?-----------------------------与线程相关的全局变量?
2.解决方案
在c++11之前可能要动用一些脑筋,为每个线程分配一个变量来表明出错的原因,但是在c++11之后,我们有更完美的解决方案,thread_local关键字,但凡用thread_local声明的的变量,默认每个线程都会产生他的副本,并且这些副本不会相互影响,换句话说,在不同的线程去看程序里同一个变量,看到的是不同的变量值,既然全局变量线程分离了,那么很明显就可以利用这个变量实现GetLastError的功能