线程安全的缓存
shared_ptr<widget> get_widget(int id) {
static map<int, weak_ptr<widget>> cache;
static mutex m;
lock_guard hold{m};
auto sp = cache[id].lock();
if (!sp) cache[id] = sp = load_widget(id);
return sp;
}
线程安全的缓存
shared_ptr<widget> get_widget(int id) {
static map<int, weak_ptr<widget>> cache;
static mutex m;
lock_guard hold{m};
auto sp = cache[id].lock();
if (!sp) cache[id] = sp = load_widget(id);
return sp;
}