Синглтон для потока
В 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();
Таким образом, по логике, при первом вызове из нового потока будет создана новая переменная, когда будет возвращаться при последующих вызовах из этого потока.
С проблемами я не сталкивался используя такой подход, но решил всё-таки уточнить: есть ли сдесь подводные камни?