It could happen that we are quitting when the embed thread is still
waiting for the main thread, so we make sure embed thread is always
signaled when quitting.
}
NodeBindings::~NodeBindings() {
- // Clear uv.
+ // Quit the embed thread.
embed_closed_ = true;
+ uv_sem_post(&embed_sem_);
WakeupEmbedThread();
+
+ // Wait for everything to be done.
uv_thread_join(&embed_thread_);
+ message_loop_->RunUntilIdle();
+
+ // Clear uv.
uv_sem_destroy(&embed_sem_);
uv_timer_stop(&idle_timer_);
}