我写了一个示例程序,将 Napi::Env 对象传递给子线程使用,但是运行时出错。
示例代码如下:
#include <napi.h>
#include <iostream>
#include <thread>
#include <chrono>
Napi::String Method(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
// ok
// Napi::Object obj = Napi::Object::New(env);
// obj.Set(Napi::String::New(env, "msg"), "hello world");
// std::string str = obj.Get("msg").As<Napi::String>();
// std::cout << "str : " << str << std::endl;
std::thread t([](Napi::Env env) {
std::cout << "run here 1" << std::endl;
Napi::Object obj = Napi::Object::New(env);
std::cout << "run here 2" << std::endl;
obj.Set(Napi::String::New(env, "msg"), "hello world");
std::cout << "run here 3" << std::endl;
std::string str = obj.Get("msg").As<Napi::String>();
std::cout << "str : " << str << std::endl;
}, info.Env());
t.join();
return Napi::String::New(env, "world");
}
Napi::Object Init(Napi::Env env, Napi::Object exports) {
exports.Set(Napi::String::New(env, "hello"),
Napi::Function::New(env, Method));
return exports;
}
NODE_API_MODULE(hello, Init)
错误如下:
感谢您的帮助!