2010-04-18 148 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