Maybe the application exits before the thread has been executed? Try to 
join the thread before executing the application.

/Peter

Den lördagen den 1:e februari 2014 kl. 10:58:08 UTC+1 skrev Sara 
Abdelhameed:
>
> I tried to work with Isolate::New() for each thread "including the main 
> thread" and then Isolate::Scope but it behaved as before, only printed 
> hello, world of the main thread and didn't print hi,Sara of the 2nd thread. 
> is this because they need a synchronization as they can't work in the same 
> time so I must use v8::Lock? or what is the problem? 
>
> here is the code:
> #include <v8.h>
> #include <pthread.h>
> using namespace v8;
> void* threadFunction(void*){
> Isolate* isolate1 = Isolate::New();
>   if(isolate1 == NULL){
>    printf("Error1");
>    return 0;
> }
> Isolate::Scope isolate_scope1(isolate1);
> HandleScope handle_scope1(isolate1);
> Handle<Context> context1 = Context::New(isolate1);
>   Context::Scope context_scope1(context1);
>   Handle<String> source1 = String::NewFromUtf8(isolate1, "'Hi' + ', 
> Sara'");
>   Handle<Script> script1 = Script::Compile(source1);
>   Handle<Value> result1 = script1->Run();
>   String::Utf8Value utf81(result1);
>   printf("%s\n", *utf81);
>   return 0;
> }
> int main(int argc, char* argv[]) {
>
>   // Get the default Isolate created at startup.
>   Isolate* isolate =  Isolate::New();;
>   if(isolate == NULL){
>    printf("Error");
>    return 0;
> }
> Isolate::Scope isolate_scope(isolate);
>   // Create a stack-allocated handle scope.
>   HandleScope handle_scope(isolate);
>   // Create a new context.
>   Handle<Context> context = Context::New(isolate);
>   // Enter the context for compiling and running the hello world script.
>   Context::Scope context_scope(context);
>   // Create a string containing the JavaScript source code.
>  pthread_t thread_id;
>  pthread_create(&thread_id, NULL, &threadFunction,NULL);
>   Handle<String> source = String::NewFromUtf8(isolate, "'Hello' + ', 
> World!'");
>   // Compile the source code.
>   Handle<Script> script = Script::Compile(source);
>   // Run the script to get the result.
>   Handle<Value> result = script->Run();
>   // Convert the result to an UTF8 string and print it.
>   String::Utf8Value utf8(result);
>   printf("%s\n", *utf8);
>   return 0;
> }
>
>
> and the command i used to compile, 
> g++ -Iinclude Two_threads.cpp -o Two_threads -Wl,--start-group 
> out/native/obj.target/{tools/gyp/libv8_{base.ia32,snapshot},third_party/icu/libicu{uc,i18n,data}}.a
>  
> -Wl,--end-group -lrt
> and to execute it:
> ./Two_threads
>
> the output is:
> Hello, World!
>
>
> On Fri, Jan 31, 2014 at 1:49 PM, Kevin Ingwersen 
> <ingwi...@googlemail.com<javascript:>
> > wrote:
>
>> He was just saying that you need to create one isolate for each new 
>> thread, so that you can make a context in each thread. With that, the 
>> threads can run independent from the other :) So you need to make it so, 
>> that thread1 has an own isolate, thread2 has an own isolate, and so on and 
>> so forth. :3
>> Am Fr. Jan. 31 2014 22:27:04 schrieb Sara Abdelhameed:
>>
>> Sorry, I don't get what you exactly meant, did you mean I create for 
>> every thread including the main thread and enter them using an isolate 
>> scope? or what I didn't understand  "(at least on all but the main 
>> threads) "?
>>
>> Thank you in advance :) 
>>
>>
>> On Fri, Jan 31, 2014 at 11:15 PM, Jochen Eisinger 
>> <joc...@chromium.org<javascript:>
>> > wrote:
>>
>>> Instead of using Isolate::GetCurrent() you have to create the isolates 
>>> explicitly (at least on all but the main threads) and enter them, e.g. 
>>> using an isolate scope.
>>>
>>> best
>>> -jochen
>>>
>>>
>>> On Fri, Jan 31, 2014 at 10:09 PM, Sara Abdelhameed <
>>> saraabdel...@gmail.com <javascript:>> wrote:
>>>
>>>> I have tried these but it wasn't working with me,
>>>> The code is:
>>>> #include <v8.h>
>>>> #include <pthread.h>
>>>> using namespace v8;
>>>> void* threadFunction(void*){
>>>> Isolate *isolate1 = Isolate::GetCurrent();
>>>> HandleScope handle_scope1(isolate1);
>>>> Handle<Context> context1 = Context::New(isolate1);
>>>>   Context::Scope context_scope1(context1);
>>>>   Handle<String> source1 = String::NewFromUtf8(isolate1, "'Hi' + ', 
>>>> Sara'");
>>>>   Handle<Script> script1 = Script::Compile(source1);
>>>>   Handle<Value> result1 = script1->Run();
>>>>   String::Utf8Value utf81(result1);
>>>>   printf("%s\n", *utf81);
>>>>   return 0;
>>>> }
>>>> int main(int argc, char* argv[]) {
>>>>   Isolate* isolate = Isolate::GetCurrent();
>>>>   HandleScope handle_scope(isolate);
>>>>   Handle<Context> context = Context::New(isolate);
>>>>   Context::Scope context_scope(context);
>>>>  pthread_t thread_id;
>>>> pthread_create(&thread_id, NULL, &threadFunction,NULL);
>>>>   Handle<String> source = String::NewFromUtf8(isolate, "'Hello' + ', 
>>>> World!'");
>>>>   Handle<Script> script = Script::Compile(source);
>>>>   Handle<Value> result = script->Run();
>>>>   String::Utf8Value utf8(result);
>>>>   printf("%s\n", *utf8);
>>>>   return 0;
>>>> }
>>>>
>>>> and the command that I used to compile is 
>>>> g++ -Iinclude Two_threads.cpp -o Two_threads -Wl,--start-group 
>>>> out/native/obj.target/{tools/gyp/libv8_{base.ia32,snapshot},third_party/icu/libicu{uc,i18n,data}}.a
>>>>  
>>>> -Wl,--end-group -lrt
>>>> and to execute is 
>>>>  ./Two_threads
>>>>
>>>> it was compiled without giving me any error but when I executed it i 
>>>> printed only hello world! "the javascript string of the main thread" and 
>>>> didn't print hi,Sara the javascript string of the single thread I have in 
>>>> the code. 
>>>>
>>>> So, what is the problem? or what ? 
>>>>
>>>> Thank you in advance
>>>>
>>>>
>>>>
>>>> On Fri, Jan 31, 2014 at 11:45 AM, Sara Abdelhameed <
>>>> saraabdel...@gmail.com <javascript:>> wrote:
>>>>
>>>>> Thank you, and I'll try that now, wish it work with me. 
>>>>>
>>>>>
>>>>> On Fri, Jan 31, 2014 at 9:40 PM, Dmitry Lomov 
>>>>> <dsl...@chromium.org<javascript:>
>>>>> > wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Jan 31, 2014 at 11:38 AM, Sara Abdelhameed <
>>>>>> saraabdel...@gmail.com <javascript:>> wrote:
>>>>>>
>>>>>>> so, if I want to make very simple example such as having two threads 
>>>>>>> that each one run different script and don't depend on each other, and 
>>>>>>> I 
>>>>>>> want them to be in parallel, so I must use two isolate, for every 
>>>>>>> thread 
>>>>>>> there is one isolate and no need to use lock as the scripts are 
>>>>>>> different 
>>>>>>> and independent from each other. is this right? 
>>>>>>>
>>>>>>  
>>>>>> Yes that is correct.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> On Friday, January 31, 2014 11:23:28 AM UTC+2, Jochen Eisinger wrote:
>>>>>>>
>>>>>>>> There are two options: (1) use different isolates on each thread 
>>>>>>>> (then the scripts can run in parallel) and (2) use one isolate and use 
>>>>>>>> v8::Locker to lock the isolate before you use it (then only one thread 
>>>>>>>> at a 
>>>>>>>> time can execute scripts)
>>>>>>>>
>>>>>>>> best
>>>>>>>> -jochen
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Jan 31, 2014 at 9:51 AM, Sara Abdelhameed <
>>>>>>>> saraabdel...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hello all, 
>>>>>>>>> does v8 engine support multithreaded application ? and could I run 
>>>>>>>>> two different javascript code in two different threads at the same 
>>>>>>>>> time ? 
>>>>>>>>>
>>>>>>>>> -- 
>>>>>>>>>
>>>>>>>>
>>
>>
>>  -- 
>> -- 
>> v8-users mailing list
>> v8-u...@googlegroups.com <javascript:>
>> http://groups.google.com/group/v8-users
>> --- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "v8-users" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/v8-users/oN_3tVBd3H4/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> v8-users+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
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 v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to