Прерывание выполнения функции V8 - PullRequest
0 голосов
/ 13 февраля 2020

Привет . Я хочу реализовать terminateThread функцию в JavaScript (тот же clearTimeout).
Я реализовал startThread функцию, которая запускает новый поток win32, который вызывает функцию. Функция может выполняться бесконечно, и мне нужна возможность остановить выполнение функции, но не останавливайте выполнение основного потока (не используйте isolate-> TerminateExecution).
Я попытался найти исходный код функций clearInterval и clearTimeout в WebApi, но это было неудачно.
Как я могу прервать выполнение функции V8 из другого потока?
Заранее спасибо!

1 Ответ

0 голосов
/ 14 февраля 2020

Учитывая, что только один поток может быть активным в изоляте одновременно, isolate->TerminateExecution() может показаться правильным способом прервать , выполняющий в данный момент поток . После этого вы можете отменить запрос на прекращение, чтобы другие потоки могли возобновить свое выполнение.

Помните: вы как разработчик V8 обязаны убедиться, что в данном изоляторе никогда не выполняется более одного потока. , В противном случае вы получите странные сбои. Для этого вы можете использовать v8::Locker или собственное решение для блокировки / мьютекса.

...