mirror of
https://github.com/Tencent/Hippy.git
synced 2026-10-29 14:10:47 +08:00
fix(core): fix mutex crash
(cherry picked from commit 62fc9cfa191e8bb254bbaa147ca8b5996bab57e3)
(cherry picked from commit a2f42660be)
This commit is contained in:
committed by
churchill-zhang
parent
76c4540358
commit
4c2a8cd52e
@@ -55,6 +55,7 @@ class Engine {
|
||||
|
||||
void TerminateRunner();
|
||||
inline std::shared_ptr<JavaScriptTaskRunner> GetJSRunner() {
|
||||
std::lock_guard<std::mutex> lock(js_runner_mutex_);
|
||||
return js_runner_;
|
||||
}
|
||||
inline std::shared_ptr<WorkerTaskRunner> GetWorkerTaskRunner() {
|
||||
@@ -73,6 +74,6 @@ class Engine {
|
||||
std::shared_ptr<VM> vm_;
|
||||
std::unique_ptr<RegisterMap> map_;
|
||||
std::mutex cnt_mutex_;
|
||||
std::mutex runner_mutex_;
|
||||
std::mutex js_runner_mutex_;
|
||||
uint32_t scope_cnt_;
|
||||
};
|
||||
|
||||
@@ -44,11 +44,14 @@ Engine::~Engine() {
|
||||
|
||||
void Engine::TerminateRunner() {
|
||||
TDF_BASE_DLOG(INFO) << "~TerminateRunner";
|
||||
std::lock_guard<std::mutex> lock(runner_mutex_);
|
||||
if (js_runner_) {
|
||||
js_runner_->Terminate();
|
||||
js_runner_ = nullptr;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(js_runner_mutex_);
|
||||
if (js_runner_) {
|
||||
js_runner_->Terminate();
|
||||
js_runner_ = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (worker_task_runner_) {
|
||||
worker_task_runner_->Terminate();
|
||||
worker_task_runner_ = nullptr;
|
||||
|
||||
@@ -194,7 +194,10 @@ void ContextifyModule::LoadUntrustedContent(const CallbackInfo& info) {
|
||||
RemoveCBFunc(uri);
|
||||
}
|
||||
};
|
||||
scope->GetTaskRunner()->PostTask(js_task);
|
||||
auto runner = scope->GetTaskRunner();
|
||||
if (runner) {
|
||||
runner->PostTask(js_task);
|
||||
}
|
||||
};
|
||||
if (loader) {
|
||||
loader->RequestUntrustedContent(uri, cb);
|
||||
|
||||
Reference in New Issue
Block a user