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