Можно ли подделать / взломать Thread Local Storage?
Я нахожусь в некотором затруднении.
У меня есть большое приложение с движком Google V8 javascript. Некоторые вызовы выполняются движку V8 в потоке пользовательского интерфейса. Чтобы быть добрым к пользователю, как все рекомендуют, некоторые длинные операции выполняются в отдельном потоке, без зависания потока пользовательского интерфейса. Тем не менее, эти длительные операции также вызывают обращения к движку JavaScript V8. Таким образом, несколько потоков обращаются к V8.
Дело в том, что V8 использует локальное хранилище потоков. Это, кажется, заставляет мое приложение взорваться случайным образом. Это определенно в классе "Как это возможно работало до сих пор?" ошибок.
Без значительной реорганизации моего приложения я предлагаю ужасный, ужасный и ужасный супер-хак: могу ли я заставить V8 думать, что он работает в другом потоке?
Другими словами, в первый раз, когда я звоню в V8, я записываю ветку. Тогда длявсе остальные звонки на V8Я каким-то образом подделываю поток, чтобы локальное хранилище потока / что-либо еще зависело от потока.
Это можно сделать? Это будет работать? Я глуп, чтобы даже подумать о таком подонке?