为每个线程分配一个实例(Boost环境)

时间:2011-08-17 00:16:58

标签: boost thread-local

我是Boost的新手,我正在重新设计一个必须在线程应用程序中工作的日志类。它被设计成像ostream对象一样工作,但是“没有用”(Eddy Izzard的声音对于那些知道他对Davinci直升机的参考的人说道。)

您可以按如下方式使用它:

Logger &logger = Logger::instance();
logger << "He designed a helicopter you know...that did not work." << endl;

所以它最初是作为一个单独设计的,经过一些方法我认为可能Logger :: instance()可以返回一个独特的Logger线程。我可以使用STL在Boost线程ID和Logger类的实例之间定义一个映射。

然后我开始考虑使用某种形式的线程本地存储可能有更智能的方法吗?

地图的一个问题是我必须做一些房屋清理,以便在线程终止时定期删除记录器。我开始觉得自己正在重塑一切。

我看到Boost支持线程本地存储。

有任何想法或警告吗?

谢谢,

肯尼

1 个答案:

答案 0 :(得分:0)

我使用了Boost线程本地存储,并使用一个对象注册每个记录器,该对象将数据汇集到文件或cout。

肯尼