-
多线程保护数据时,一种较为特殊的情况是只需要保护资源的初始化。 资源初始化一般遵循"lazy initialization"的原则,也就是在用到该资源最近的地方再初始化。 比较容易想到的办法是用std::mutex,将资源初始化的地方锁起来,如下: 1 std::shared_ptr<some_resource> resource_ptr; 2 std::mutex resource_mutex; 3 void foo() 4 { 5 std::unique_lock<std::mutex> lk(resource_mutex); 6 if(!resource_ptr) 7 { 8 …
Read More