【问题标题】:C++ boost thread id and SingletonC ++提升线程ID和Singleton
【发布时间】:2010-04-18 20:09:19
【问题描述】:

很抱歉这周问了这么多问题。

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

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

【问题讨论】:

  • 你不能对单例数据使用 TLS 吗?
  • @neil 我不知道什么是 TLS。编辑:没关系,线程本地存储
  • TLS == 线程本地存储 - 属于特定线程的内存
  • @neil 是的,这就是我需要的。我不知道如何使用它。谢谢

标签: c++ boost singleton multithreading


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多