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