比如在libgo中的函数
Processer* & Processer::GetCurrentProcesser() { static thread_local Processer *proc = nullptr; return proc; }
然后给proc赋值可以用
struct Processer::Process(){ GetCurrentProcesser() = this }
刚看到这段代码的时候我是懵圈的,我是第一次见这么写。但是细细分析就发现确实很巧妙。
众所周知,static修饰的常量是保存在静态区中的,是不参与堆栈回收之类的事情的,也就是说它是持久存在的,所以不必担心变量赋值给空指针,然后它提供了一种不在类内声明的变量方式,与类解耦
标签:Processer,外部,局部变量,static,GetCurrentProcesser,proc,赋值 From: https://www.cnblogs.com/yanzhao-x/p/17102226.html