Синглтон для потока

В c++ есть спицификатор thread_local который позволяет привязать переменную к потоку. В одной из моих программ я использую данный спецификатор для подобия синглтона, который возвращает некий объект (который не может быть разделен между потоками, но могут быть инстансы для каждого потока) конкретно для использования в потоке из которого произошел вызов функции. Примерно так:

class ThreadSingleton {
  public:
    static Object &instance() {
      thread_local Object retval;
      return retval;
    }

  ...
};

...

// in thread1
auto &instanceForThread1 = ThreadSingleton::instance();

... 
// in thread2
auto &instanceForThread2 = ThreadSingleton::instance();

Таким образом, по логике, при первом вызове из нового потока будет создана новая переменная, когда будет возвращаться при последующих вызовах из этого потока.

С проблемами я не сталкивался используя такой подход, но решил всё-таки уточнить: есть ли сдесь подводные камни?


Ответы (0 шт):