【发布时间】:2012-02-18 22:26:01
【问题描述】:
在我的 C++ 代码中,我保留了一个指向对象的指针 应该懒惰地创建,即仅应请求创建。 我有以下代码,这显然不是线程安全的。
LAZY* get_lazy()
{
if (0 == _lazy)
_lazy = create_lazy();
return _lazy;
}
我想知道我应该在这里使用哪种同步? 我知道 Boost.thread 支持一次性初始化。 但我希望有一个仅使用 TBB + C++ 的简单解决方案。 我还应该注意...
- 我无法将
_lazy创建为静态对象(我实际上想保留此类延迟创建的对象的无限数组) - 此类
LAZY对象不能过度分配(创建非常昂贵)
【问题讨论】:
标签: c++ multithreading thread-safety tbb