2010-04-18 147 views
4

对不起本周洪水这么多问题。C++ boost线程ID和Singleton

我假设thread.get_id返回的线程索引是特定于实现的。 在pthreads的情况下,索引是否重用? IE,如果线程0运行并且加入,线程启动后缀会有不同的ID?

我问这个问题的原因是需要实现一个带有扭曲的Singleton模式:每个线程都有自己的实例。我知道这听起来很疯狂,但是线程控制硬件(cuda),即使在线程级别,它也不允许设备内存共享。
什么是实现这种模式的好方法?

+2

你不能使用TLS的单身数据? – 2010-04-18 20:11:23

+0

@neil我不知道TLS是什么。编辑:从来没有,线程本地存储 – Anycorn 2010-04-18 20:12:25

+0

TLS ==线程本地存储 - 属于特定线程的内存 – 2010-04-18 20:14:55

回答

5

对于每个线程都有自己的实例的全局(单例),请使用线程本地存储。 Boost有thread_specific_ptr这个。

+0

啊,很好。正是我想要的 – Anycorn 2010-04-18 20:14:55