У меня есть код на С++, использующий локальное хранилище потоков, каждый поток имеет вектор, в который он может помещать данные.
Я использую TLS для хранения идентификатора индекса для каждого потока, его можно использовать для поиска, в какой вектор вставлять данные. Затем он выполняет изрядное количество кода, который помещает данные в вектор.
Мне интересно, возможно ли, что ОС может перепланировать мой код для выполнения в другом потоке после того, как он получил указатель на локальный объект потока. (Пока что код выполняется нормально, и я этого не видел). Но если бы это было возможно, это наверняка бы сломало мою программу, поскольку теперь два потока могли бы иметь один и тот же объект.
Предполагая, что это правда, кажется, что это будет проблемой даже для любого кода, использующего TLS любой сложности, предназначен ли TLS только для простых объектов, где вы не берете адрес?
Спасибо!