On Thu, Mar 20, 2014 at 2:08 PM, Kevin Ingwersen <[email protected]> wrote: > Hey. > Good to see someone who knows lots more than I do! > > I was really only going to have ONE exact node process. The other is a CEF > browser process. the nodejs process is just to run a script in the > background. I am writing an api to bridge the background to the foreground. > its very trivial, just passing std::string back and forth using a project on > github called channel (its a single-header project). > Here is the example code that I currently use to test nodejs on threading: > > > struct _Args_t { int arg_c; char** arg_v; } Args; > void* runner(void* data) { > cout << "Args: " << Args.arg_v[0] << endl; > > node::Start(Args.arg_c, Args.arg_v); > return NULL; > } > int main(int argc, char *argv[]) { > // Init the struct. > Args.arg_c=argc; > Args.arg_v=(char**)argv; > cout << "..." << endl; > > pthread_t thatOtherThread; > pthread_create(&thatOtherThread, NULL, runner, NULL); > pthread_detach(thatOtherThread); > sleep(5); > return 0; > } > > > As you see, I am currently, as this is just testing, only spawning a thread, > tryign to pick up a function that launches nodejs. I want to optimize the > code later, but that should do for now, ot find out what I need to change in > general. > > Since v8 seems to complain about the way its launched, what can I change in > node.cc->node::Start() to make it work nicely?
I bet it's because node::Start() calls node::Init() which in turn calls v8::Isolate::GetCurrent() and assigns that to the node_isolate global (which is scheduled to be removed but that aside.) v8::Isolate::GetCurrent() looks up the isolate in thread-local storage; inside a new thread, that thread-local slot is NULL. You probably need to initialize V8 first, then create a new isolate and enter it before calling node::Start(). -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
